【问题标题】:How to change the color of the title bar in javax.swing?如何更改 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 不允许我们访问标题栏的背景。
  • 感谢大家花时间在我身上。还有你的建议?????????☺️☺️

标签: java swing colors jframe titlebar


【解决方案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);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2011-10-12
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2017-11-02
    相关资源
    最近更新 更多