【问题标题】:Change Color of JTabbedPanel side view更改 JTabbedPane 侧视图的颜色
【发布时间】:2020-05-20 21:48:25
【问题描述】:

我正在使用 JTabbedPane 设计以下布局,并希望更改突出显示部分的颜色。但我没有办法做到这一点。
我的问题
如何更改其背景颜色?
我尝试了什么?
我尝试更改 JPanel 和 JTabbedPane 的 background-colorForeground-color,但没有成功。
我也试过这个,同时将Opaque = false 保留在属性中,但没有运气。
jTabbedPane1.setForegroundAt(1, Color.yellow); jTabbedPane1.setForegroundAt(2, Color.yellow);


更新 1

 String[] tabNames = {"Signin", "General", "Call Rate", "Audio Device","tab 5","tab 6","tab 7","tab 8","tab 9"};

    for (int i = 0; i < tabNames.length; i++) {
        JLabel lab = new JLabel("<html><font color=white>" + tabNames[i] + "</font></html>", SwingConstants.CENTER);

        lab.setForeground(Color.red);
        lab.setBackground(Color.BLUE);
        lab.setPreferredSize(new Dimension(200, 50));
        lab.setFont(new Font("Times New Roman", Font.BOLD, 22));
        jTabbedPane1.setTabComponentAt(i, lab);
    }

    for (int i = 0; i < this.jTabbedPane1.getTabCount(); i++) {
        jTabbedPane1.setBackgroundAt(i,Color.DARK_GRAY);
    }

我尝试添加JLabel 以更改出现我的选项卡名称的组件的大小,然后尝试设置setBackgroundAt。它和setBackgroundsetForeground 在标签上都不起作用。
我的外观和感觉

  try {

        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }

    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(Settings.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }

【问题讨论】:

  • 您是要更改标签的颜色,还是标签所在的“托盘”?
  • @VGR 显示登录、常规等标签名称的托盘
  • @VGR 我用我之前定义的以外的尝试更新了这个问题。请看一下
  • 你试过setBackgroundAt吗?
  • @VGR 请查看更新后的问题

标签: java swing jpanel jtabbedpane


【解决方案1】:

基本逻辑是:

JPanel tab1 = new JPanel();
tab1.background( Color.RED );

JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.add(tab1, "Tab1");

JPanel parent = new JPanel( new BorderLayout() );
parent.setBackground( Color.GREEN );
parent.add( tabbedPane );

frame.add( parent );

现在标签所占据的区域将具有“父”面板的背景颜色。

如果这不起作用,那么您的外观有问题。

解决方案 更改外观后问题已解决

【讨论】:

  • 我在 Ubuntu 19.10 上使用默认生成的外观,即 Nimbus
  • 我刚刚用外观更新了我的问题。请看一下
  • 好吧,您发布的代码没有按照我的建议进行。我看不到您将选项卡式窗格添加到父面板的位置。发布一个正确的minimal reproducible example 来证明问题(使用我的建议)。另外,注释掉将 LAF 设置为 Nimbus 的代码,看看是否有任何变化。然后您可以验证 LAF 是否是问题所在。我在 Windows 上使用默认 LAF 没有问题。
  • 在注释掉 Nimbus 外观后,它会更新定义的颜色。如何识别外观问题?
  • 这超出了我的知识水平。您需要查看 Nimbus LAF 代码并尝试找出问题所在。覆盖 LAF 代码并非易事。
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 2012-02-03
  • 2016-02-03
  • 2014-06-19
  • 1970-01-01
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多