无法更改标题栏和 JMenuBar 的颜色
Cannot change color of Titlebar and JMenuBar
我尝试修改 Windows 标题栏的颜色或 JMenuBar 的颜色。我通过 UIManager.put( "XXXXXXX", Color.GREEN) 将每个外观键设置为 Color.GREEN,其中 XXXXX 只是一个占位符。大多数元素会改变,但有些不会。例如,请参见图片。
红色的是我的问题(其他的也很奇怪但是没关系)。
使用 netbeans gui builder 构建 GUI (JFrame ->JMenuBar)
也许我应该提一下:
- 使用 LAF“Windows”
- 二手 OS: Windows 10
解决方案更新 - 临时
好吧,我现在有一些工作(不能测试太多稍后会做)。
我必须在更改为 Windows LAF 之前创建 JFrame,这会导致像 @bhavna garg 和 @Ganesh Patel 这样的框架,然后我将 LAF 更改为 windows,所有其他元素看起来都像我想要的那样。颜色不对,我认为这不是一个可行的解决方案,但我稍后会检查
See for titlebar See This image要设置标题栏的颜色,请使用:
frame.getRootPane().setWindowDecorationStyle(5);
5 是常量,它将为您的菜单栏提供绿色。您可以使用 1 到 8 之间的数字。示例:8 将呈现橙色。
要设置菜单栏的颜色,请使用:
menubar.setBackground(Color.RED);
menubar.setOpaque(true);
我希望您可以使用金属外观,我可以在其中更改标题栏的颜色以及更改菜单栏和菜单的颜色。
这是代码:
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JRootPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
public class MyLookAndFeel {
JFrame frame;
JMenuBar menubar;
MetalLookAndFeel metal;
JMenu menu;
public MyLookAndFeel() {
metal = new MetalLookAndFeel();
metal.setCurrentTheme(new MetalTheme());
try {
UIManager.setLookAndFeel(metal);
}
catch(UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
frame = new JFrame("Hello");
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
menubar = new JMenuBar();
menubar.setOpaque(true);
menubar.setBackground(Color.green);
menu = new JMenu("File");
menubar.add(menu);
frame.setJMenuBar(menubar);
frame.setVisible(true);
frame.setSize(100,100);
}
public class MetalTheme extends DefaultMetalTheme {
@Override
public ColorUIResource getMenuBackground() {
return new ColorUIResource(Color.GREEN);
}
public ColorUIResource getWindowTitleBackground() {
return new ColorUIResource(java.awt.Color.green);
}
}
public static void main(String args[]) {
new MyLookAndFeel();
}
}
我切换到 JavaFX。最初的概念对我不起作用,但感谢您的帮助。
我知道我来晚了,但这可能对其他人有帮助:
我搜索了整个互联网以找到更改 swing-based 应用程序整个主题的方法。然后我找到了一篇关于这样做的文章:
有人可能会说:
Its not possible. The top level JFrame is controlled by the look & feel of the underlying OS.
如果要访问标题栏,首先,您应该有权访问本机 java 引擎库。还好有办法:
第一步: JNA 提供 Java 程序轻松访问本机共享库,除了 Java 代码外无需编写任何内容。
所以你可以使用这个存储库来访问它们:JNA.
Scroll down to readme and find the downloadable library.
根据您使用的平台,某些元素可能会延迟。因此,请务必使用 jna-platform-5.8.0.jar
让您的应用兼容任何平台。
第二步:如果您不知道如何使用 JNA 库,那么您可以以此为例:example
无论如何,这可以解决您关于标题栏颜色的问题 ;)
主要文章:External Link
Help me improve my writing in English by telling me my mistakes :D
我尝试修改 Windows 标题栏的颜色或 JMenuBar 的颜色。我通过 UIManager.put( "XXXXXXX", Color.GREEN) 将每个外观键设置为 Color.GREEN,其中 XXXXX 只是一个占位符。大多数元素会改变,但有些不会。例如,请参见图片。
红色的是我的问题(其他的也很奇怪但是没关系)。
使用 netbeans gui builder 构建 GUI (JFrame ->JMenuBar)
也许我应该提一下:
- 使用 LAF“Windows”
- 二手 OS: Windows 10
解决方案更新 - 临时 好吧,我现在有一些工作(不能测试太多稍后会做)。 我必须在更改为 Windows LAF 之前创建 JFrame,这会导致像 @bhavna garg 和 @Ganesh Patel 这样的框架,然后我将 LAF 更改为 windows,所有其他元素看起来都像我想要的那样。颜色不对,我认为这不是一个可行的解决方案,但我稍后会检查
See for titlebar See This image要设置标题栏的颜色,请使用:
frame.getRootPane().setWindowDecorationStyle(5);
5 是常量,它将为您的菜单栏提供绿色。您可以使用 1 到 8 之间的数字。示例:8 将呈现橙色。
要设置菜单栏的颜色,请使用:
menubar.setBackground(Color.RED);
menubar.setOpaque(true);
我希望您可以使用金属外观,我可以在其中更改标题栏的颜色以及更改菜单栏和菜单的颜色。
这是代码:
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JRootPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
public class MyLookAndFeel {
JFrame frame;
JMenuBar menubar;
MetalLookAndFeel metal;
JMenu menu;
public MyLookAndFeel() {
metal = new MetalLookAndFeel();
metal.setCurrentTheme(new MetalTheme());
try {
UIManager.setLookAndFeel(metal);
}
catch(UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
frame = new JFrame("Hello");
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
menubar = new JMenuBar();
menubar.setOpaque(true);
menubar.setBackground(Color.green);
menu = new JMenu("File");
menubar.add(menu);
frame.setJMenuBar(menubar);
frame.setVisible(true);
frame.setSize(100,100);
}
public class MetalTheme extends DefaultMetalTheme {
@Override
public ColorUIResource getMenuBackground() {
return new ColorUIResource(Color.GREEN);
}
public ColorUIResource getWindowTitleBackground() {
return new ColorUIResource(java.awt.Color.green);
}
}
public static void main(String args[]) {
new MyLookAndFeel();
}
}
我切换到 JavaFX。最初的概念对我不起作用,但感谢您的帮助。
我知道我来晚了,但这可能对其他人有帮助:
我搜索了整个互联网以找到更改 swing-based 应用程序整个主题的方法。然后我找到了一篇关于这样做的文章:
有人可能会说:
Its not possible. The top level JFrame is controlled by the look & feel of the underlying OS.
如果要访问标题栏,首先,您应该有权访问本机 java 引擎库。还好有办法:
第一步: JNA 提供 Java 程序轻松访问本机共享库,除了 Java 代码外无需编写任何内容。 所以你可以使用这个存储库来访问它们:JNA.
Scroll down to readme and find the downloadable library.
根据您使用的平台,某些元素可能会延迟。因此,请务必使用 jna-platform-5.8.0.jar
让您的应用兼容任何平台。
第二步:如果您不知道如何使用 JNA 库,那么您可以以此为例:example
无论如何,这可以解决您关于标题栏颜色的问题 ;)
主要文章:External Link
Help me improve my writing in English by telling me my mistakes :D