1

Windows 版本的 Firefox 有一个特殊的橙色按钮和应用程序标题,它取代了传统的菜单栏:

火狐橙色按钮

是否可以在 Java 中创建类似的东西?或者其他公式:如何在Java的标题栏中放置一个按钮?

先感谢您!

4

2 回答 2

2

您不能更改标题栏,因为它取决于操作系统。但是您可以将 JFrame 设置为 undecorated(true) 并通过创建 JPanel 创建自定义标题栏,将其添加到框架的顶部。

于 2012-12-18T11:54:45.910 回答
1

正如其他人所说,您不能在标准标题栏中添加按钮。

但是,如果您愿意容忍使用 Metal 的外观和感觉,您可以让它为您创建一个标题栏,您可以半可靠地向其中添加组件:

JButton button = new JButton(" Menu \u25be ");

JFrame frame = new JFrame("Title");
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);

// Force creation of title bar components.
frame.setPreferredSize(new Dimension(400, 400));
frame.pack();

JLayeredPane layeredPane = frame.getLayeredPane();
JComponent titlePane = (JComponent) layeredPane.getComponentAt(0, 0);
for (Component c : titlePane.getComponents()) {
    if (c instanceof Container &&
        ((Container) c).getLayout() instanceof DefaultMenuLayout) {

        int layer = layeredPane.getLayer(titlePane);
        layeredPane.setLayer(button, layer + 1);

        button.setLocation(c.getX() + c.getWidth() + 3, 1);
        Dimension size = button.getPreferredSize();
        size.height = Math.min(size.height, titlePane.getHeight() - 2);
        button.setSize(size);
        layeredPane.add(button);

        break;
    }
}

这仅在使用 Metal 外观时才有效,因为这是唯一一个getSupportsWindowDecorations方法返回 true 的 LookAndFeel 类(我认为)。

于 2012-12-19T04:06:02.127 回答