我想自定义我的标题栏,最小化,最大化和关闭按钮.所以我用setUndecorated(true);在我的JFrame上,但是我仍然希望能够调整窗口大小.什么是最好的实现方法?
我在RootPane上有一个边框,我可以在Border或RootPane上使用MouseListener.任何建议?
import java.awt.Color; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.border.LineBorder; public class UndecoratedFrame extends JFrame { private LineBorder border = new LineBorder(Color.BLUE,2); private JMenuBar menuBar = new JMenuBar(); private JMenu menu = new JMenu("File"); private JMenuItem item = new JMenuItem("nothing"); public UndecoratedFrame() { menu.add(item); menuBar.add(menu); this.setJMenuBar(menuBar); this.setUndecorated(true); this.getRootPane().setBorder(border); this.setSize(400,340); this.setVisible(true); } public static void main(String[] args) { new UndecoratedFrame(); } }
解决方法
正如你所说,你的根窗格上有边框.因此,至少有一个位置(在您的边框绘图的下方),您的根窗格是最重要的组件.因此,您可以添加鼠标监听器和鼠标移动侦听器.
当您的根窗格被点击(并且按下鼠标按钮)时,您的鼠标和动作侦听器将通知您初始和实际的鼠标位置.因此,您可以更新两个值之间的偏移量的帧大小,使您的帧可调整大小.