我想自定义我的标题栏、最小化、最大化和关闭按钮。所以我在 JFrame 上使用了 setUndecorated(true);
,但我仍然希望能够调整窗口大小。实现它的最佳方法是什么?
我在 RootPane 上有一个边框,我可以在边框或 RootPane 上使用 MouseListeners。有什么建议吗?
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();
}
}
最佳答案
如您所说,您的根 Pane 上有边框。因此,至少有一个位置(在绘制边框的位置下方)根 Pane 是最上面的组件。因此,您可以将其添加为鼠标监听器和鼠标运动监听器。
当您的根 Pane 被单击(并按下鼠标按钮)时,您的鼠标和 Action 监听器将通知您初始和实际的鼠标位置。因此,您可以更新两个值之间的偏移量的帧大小,使您的帧可调整大小。
关于java - 使用未修饰的 JFrame 时如何添加对调整大小的支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2780780/