如何更改 javax.swing 中标题栏的颜色?
Posted
技术标签:
【中文标题】如何更改 javax.swing 中标题栏的颜色?【英文标题】:How to change the color of the title bar in javax.swing? 【发布时间】:2021-11-26 17:09:06 【问题描述】:我一般使用 Visual Studio Code 或 IntelliJ 进行编码。
在那,我看到标题栏是彩色的。不仅如此,我在许多应用程序中也看到了这一点。现在我也想在我自己的应用程序中尝试一下。但是我还没有找到任何可以完成我的工作的东西。
我一般都想要这样。
jframe.setTitleBarColor(...)
但上述类型不可用。 我可以使用其他任何技术来实现这一点吗?
【问题讨论】:
您是否尝试过更改 UIManager 属性? docs.oracle.com/javase/tutorial/uiswing/lookandfeel/… 标题栏的颜色由操作系统决定。 那么有没有办法做到这一点?但是 intellij 有黑色(深色),vscode 有黑色,MS 团队有蓝色。那么为什么我不能为我的应用程序也保留它.. 我不知道Intellij是用什么语言写的。也许Intellij使用OS系统调用来控制后台。 Java/Swing API 不允许我们访问标题栏的背景。 感谢大家花时间在我身上。还有你的建议?????????☺️☺️ 【参考方案1】:我认为这是不可能的。因为***JFrame
获取了机器操作系统的外观。
顺便说一下,这个程序将帮助您在 LAF(外观和感觉)的帮助下更改框架外观:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.metal.DefaultMetalTheme;
import javax.swing.plaf.metal.MetalLookAndFeel;
public class Main
public static void main(final String args[])
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setLocationRelativeTo(null);
f.setUndecorated(true);
f.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
JPanel panel = new JPanel();
panel.setBackground(java.awt.Color.white);
f.setContentPane(panel);
MetalLookAndFeel.setCurrentTheme(new MyDefaultMetalTheme());
try
UIManager.setLookAndFeel(new MetalLookAndFeel());
catch (Exception e)
e.printStackTrace();
SwingUtilities.updateComponentTreeUI(f);
f.setVisible(true);
class MyDefaultMetalTheme extends DefaultMetalTheme
public ColorUIResource getWindowTitleInactiveBackground()
return new ColorUIResource(java.awt.Color.orange);
public ColorUIResource getWindowTitleBackground()
return new ColorUIResource(java.awt.Color.orange);
public ColorUIResource getPrimaryControlHighlight()
return new ColorUIResource(java.awt.Color.orange);
public ColorUIResource getPrimaryControlDarkShadow()
return new ColorUIResource(java.awt.Color.orange);
public ColorUIResource getPrimaryControl()
return new ColorUIResource(java.awt.Color.orange);
public ColorUIResource getControlHighlight()
return new ColorUIResource(java.awt.Color.orange);
public ColorUIResource getControlDarkShadow()
return new ColorUIResource(java.awt.Color.orange);
public ColorUIResource getControl()
return new ColorUIResource(java.awt.Color.orange);
【讨论】:
以上是关于如何更改 javax.swing 中标题栏的颜色?的主要内容,如果未能解决你的问题,请参考以下文章
python tkinter 如何将tk界面中标题栏中的tk红色字样去掉,或者换成其他的字