Windows版本的Firefox有一个特殊的橙色按钮,结合了应用程序标题,取代了传统的菜单栏:
是否有可能在Java中创建这样的东西?或其他配方:如何在Java的标题栏中放置一个按钮?
提前谢谢!
答案 0 :(得分:2)
您无法更改标题栏,因为它取决于操作系统。但是您可以将JFrame设置为未修饰(true)并通过创建JPanel创建自定义标题栏,将其添加到框架的顶部。
答案 1 :(得分: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类(我认为)。