Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改JFrame中标题栏的颜色?_Java_Swing_Jframe_Titlebar - Fatal编程技术网

Java 如何更改JFrame中标题栏的颜色?

Java 如何更改JFrame中标题栏的颜色?,java,swing,jframe,titlebar,Java,Swing,Jframe,Titlebar,我正在使用以下代码 UIManager.put("JFrame.activeTitleBackground", Color.red); 用于更改JFrame中的工具栏颜色。但它不起作用 可以在JFrame中更改标题栏的颜色吗?这是不可能的。顶级JFrame由底层操作系统的外观控制 您可以更改Windows10内部框架的颜色,在主方法中,您可以使用: UIManager.put("InternalFrame.activeTitleBackground", new ColorUIResource(

我正在使用以下代码

UIManager.put("JFrame.activeTitleBackground", Color.red);
用于更改JFrame中的工具栏颜色。但它不起作用


可以在JFrame中更改标题栏的颜色吗?

这是不可能的。顶级JFrame由底层操作系统的外观控制


您可以更改Windows10内部框架的颜色,在主方法中,您可以使用:

UIManager.put("InternalFrame.activeTitleBackground", new ColorUIResource(Color.black ));
UIManager.put("InternalFrame.activeTitleForeground", new ColorUIResource(Color.WHITE));
UIManager.put("InternalFrame.titleFont", new Font("Dialog", Font.PLAIN, 11));
UIDefaults uiDefaults = UIManager.getDefaults();
uiDefaults.put("activeCaption", new javax.swing.plaf.ColorUIResource(Color.gray));
uiDefaults.put("activeCaptionText", new javax.swing.plaf.ColorUIResource(Color.white));
JFrame.setDefaultLookAndFeelDecorated(true);

我认为目标是在Win10上实现真正的应用程序外观。由于无法更改窗口标题的真实颜色,因此唯一的方法是自定义窗口

虽然安装金属LAF变体的示例提供了一个很好的示例,但我发现这个问题更复杂。真正的Win10窗口必须具有Win10边框、透明边框(阴影),用户可以在其中拖动以调整大小。标题必须使用Win10图标,并将鼠标悬停在窗口按钮上

我想把它装饰一下(真的);我自己画,设置窗口的插图,使内容正常工作


(小字:虽然我们都“知道”可以使用LAF定制Swing,但在现实生活中,编写LAF总是比生成子类并绘制自己的装饰要复杂得多。作为额外的麻烦,LAF体系结构并不能表达所有组件属性,“本机”LAF与本机外观相差甚远(例如,检查win7下拉列表)或感觉(下拉列表不会滑出,win7下拉列表没有悬停,但按钮有悬停)。哦,更不用说缺少类似Windows的组件,比如一个像样的Office 2016功能区,甚至Win10的一个简单的“切换”。真的,如果没有自己的组件,你做不了太多。)

我知道我有点晚了,但这可能会帮助其他人:

我搜索了整个互联网,想找到一种方法来改变我基于swing的应用程序的整个主题。然后我找到了一篇关于这样做的文章:

有人可能会说:

这是不可能的,由操作系统控制

如果您想访问标题栏,首先,您应该可以访问本机java引擎库。幸运的是,有一种方法可以实现:

第一步:JNA为Java程序提供了对本机共享库的轻松访问,而无需编写Java代码。 因此,您可以使用此存储库访问它们:

根据您使用的平台,某些元素可能会延迟。因此,请确保使用
jna-platform-5.8.0.jar
使您的应用程序与任何平台兼容

第二步:如果您不知道如何使用JNA库,那么可以将此作为示例:

无论如何,这可以解决标题栏颜色的问题;)

主要条款:


告诉我我的错误,帮助我提高英语写作水平:D

在我看来,两个家伙在做同一个家庭作业。巧合?也许不是作业,但肯定是同样的问题!等一下-有人想更改标题栏的颜色,但Venkats说的是工具栏,通常被理解为包含主按钮(“打开”、“保存”、“复制”、“粘贴”等)的菜单下方的区域。您不能更改“JFrame工具栏”的颜色或“窗口标题栏”颜色?可以使用一些外观包或自定义外观代码。下面是一个来自
user1781452
的示例。在Java8中,它可以完美地工作。这不起作用。在win7上,显示默认的玻璃窗口标题。由
JFrame向上投票。设置DefaultLookandFeelDecorated(true)OP要求更改JFrame颜色。答案是内部框架。很好的例子。然而,这不仅改变了颜色,而且安装了一个新的LAF,使应用程序看起来像回到90年代一样
UIDefaults uiDefaults = UIManager.getDefaults();
uiDefaults.put("activeCaption", new javax.swing.plaf.ColorUIResource(Color.gray));
uiDefaults.put("activeCaptionText", new javax.swing.plaf.ColorUIResource(Color.white));
JFrame.setDefaultLookAndFeelDecorated(true);
Scroll down to readme and find the downloadable library.