我的问题与Jonas在下一个主题上提出的问题有关:
How to add support for resizing when using an undecorated JFrame?
How can I customize the title bar on JFrame?
我想创建一个没有原生标题栏的自定义窗口。这可以通过调用:
来完成setUndecorated(true);
但是,这也会删除重新调整大小的机制。所以现在我正在使用下一个代码:
public UndecoratedFrame() {
this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
menu.add(item);
menuBar.add(menu);
this.setJMenuBar(menuBar);
this.setUndecorated(true);
this.getRootPane().setBorder(border);
this.setSize(400,340);
this.setVisible(true);
}
这会返回一个如下窗口: http://www.roseindia.net/java/example/java/swing/CreateJList.shtml (仅考虑标题栏和边框)
如何删除顶部标题栏而不删除重新设置的装饰器?或者我应该自定义默认标题栏?我怎么能以一种简单的方式做到这一点?
这个想法是以一个只有边框的框架结束(重新调整大小......)。然后,我可以创建一个带有JPanel的自定义标题栏和触发关闭,最小化等操作系统事件的按钮。
提前感谢您的支持。
答案 0 :(得分:2)
您需要实现自己的鼠标侦听器并解释鼠标手势,以编程方式调整窗口大小。
另一个选择是使用JIDE Common Layer - 它提供了ResizableSupport接口的多个实现,包括ResizableFrame,它可以完成你描述的内容。
http://www.jidesoft.com/javadoc/com/jidesoft/swing/ResizableFrame.html