[英]Java look and feel JTabbedPane
我在我的项目中使用JTabbedPane,并且试图更改应用程序的外观。 当我设置窗口的外观(以及与此相关的任何其他外观)时,所有按钮,复选按钮等都将更改为应具有的外观,但选项卡仍然看起来像默认的摆动选项卡。 这是一个看起来像的例子:
按钮和复选框看起来像Windows组件,但是选项卡看起来像默认的秋千。 如果有帮助,我使用的是JTabbedPane的子类,该子类在单独的类文件中定义。 我的问题是如何使JTabbedPane中的选项卡看起来像Windows选项卡?
这段代码为我模拟了问题。 选项卡显示为摇摆,但按钮显示为不同的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);
}
}
在设置PLAF之前创建JTabbedPane
。 至少有两个修复程序。
main
,并将其放在调用之后以设置PLAF。 SwingUtilities.updateComponentTreeUI(topLevelContainer)
,如嵌套布局示例所示 。 该示例允许用户在运行时更改PLAF。 您可以使用几个UIManager设置来管理JTabbedPane的外观。 下面的链接提供了可用于自定义JTabbedPane外观的所有属性。
例如,您可以使用以下方式自定义颜色:
UIManager.put("TabbedPane.selected", Color.RED);
JTabbedPane已在发布的代码中实例化,因此UIManager设置没有更改。
import javax.swing.*;
import java.awt.*;
public class TabbedFrame
{
private static JFrame window;
private static JPanel pane;
private static JTabbedPane tabs;
public static void main(String[] vars)
{
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
UIManager.put("TabbedPane.selected",Color.GREEN);
} catch (Exception ee){
ee.printStackTrace();
}
window = new JFrame("tabs");
pane = new JPanel();
tabs = new JTabbedPane();
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.