gpt4 book ai didi

Java 外观 JTabbedPane

转载 作者:行者123 更新时间:2023-12-02 00:18:07 27 4
gpt4 key购买 nike

我正在我的一个项目中使用 JTabbedPane,并且我正在尝试更改应用程序的外观和感觉。当我设置窗口的外观和感觉(以及与此相关的任何其他外观和感觉)时,所有按钮、检查按钮等都会更改为它们应该的外观,但选项卡仍然看起来像默认的 Swing 选项卡。下面是一个示例:

enter image description here

按钮和复选框看起来像 Windows 组件,但选项卡看起来像默认的 swing。如果有帮助,我将使用在单独的类文件中定义的 JTabbedPane 子类。我的问题是如何使 JTabbedPane 中的选项卡看起来像 Windows 选项卡?

这段代码为我模拟了这个问题。选项卡显示为 swing,但按钮显示为不同的 l&f:

import javax.swing.*;
import java.awt.*;
public class TabbedFrame
{
private static JFrame window;
private static JPanel pane;
private static JTabbedPane tabs = new JTabbedPane();
public static void main(String[] vars)
{
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
} catch (Exception ee){
ee.printStackTrace();
}
window = new JFrame("tabs");
pane = new JPanel();
window.setSize(200, 300);
window.setLocation(100, 100);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setContentPane(pane);
Panel[] panes;
panes = new Panel[2];
panes[0] = new Panel();
panes[1] = new Panel();
panes[0].add(new Label("PANEL 1..................."));
panes[1].add(new Label("PANEL 2 ....."));
tabs.addTab("tab 1", panes[0]);
tabs.addTab("tab 2", panes[1]);
tabs.setSize(480, 640);
pane.add(tabs);
pane.add(new JButton("test"));
pane.add(new JCheckBox());
pane.add(new JRadioButton());
tabs.setBounds(20, 20, 200, 200);
window.setVisible(true);
}
}

最佳答案

JTabbedPane 是在设置 PLAF 之前创建的。至少有两个修复。

  1. 将创建选项卡式 Pane 的行移至main 中,并将其放在用于设置 PLAF 的调用之后。
  2. 调用 SwingUtilities.updateComponentTreeUI(topLevelContainer),如 Nested Layout Example 中所示。该示例允许用户在运行时更改 PLAF。

关于Java 外观 JTabbedPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11552918/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com