Java的外观和感觉JTabbedPane
我在一个项目中使用JTabbedPane,我试图改变应用程序的外观和感觉。当我设置窗口的外观和感觉(以及其他任何外观和感觉)时,所有按钮,检查按钮等都改变为它们应该看起来像的样子,但标签仍然看起来像默认的摆动标签。这里是什么样子的例子:Java的外观和感觉JTabbedPane
按钮和复选框看起来像windows组件,但标签看起来像默认摆动。如果有帮助,我使用在单独的类文件中定义的JTabbedPane的子类。我的问题是如何让JTabbedPane中的选项卡看起来像Windows标签?
此代码模拟我的问题。该选项卡显示为挥杆,但按钮显示为不同的升& 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之前被创建。至少有两个修复程序。
- 将创建选项卡式窗格到
main
线,并把它的调用设置PLAF后。 - 请致电
SwingUtilities.updateComponentTreeUI(topLevelContainer)
,如Nested Layout Example所示。该示例允许用户在运行时更改PLAF。
我只是这样做,它的工作!谢谢! +1 – axl 2012-07-19 02:55:52
有一对夫妇的UIManager的设置,您可以用它来管理的外观和感觉你的JTabbedPane的。下面的链接提供了所有可用于定制JTabbedPane外观的属性。
Customizing JTabbedPane look and feel
例如,你可以使用自定义颜色:
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);
}
}
当我这样做时,没有什么变化,据我所知。标签仍然看起来像默认的摇摆。 – axl 2012-07-19 02:40:39
是别的明确设置标签的外观和感觉? JTabbedPane展示了哪些UI类? – 2012-07-19 02:09:01
适用于['TabComponentsDemo'](http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html#eg)。请编辑您的问题,以包含展示您描述的问题的[sscce](http://sscce.org/)。 – trashgod 2012-07-19 02:10:00
感谢谁编辑了图片 @JeffStorey - 这是默认的摇摆外观 – axl 2012-07-19 02:22:34