2012-07-19 85 views
0

我在一个项目中使用JTabbedPane,我试图改变应用程序的外观和感觉。当我设置窗口的外观和感觉(以及其他任何外观和感觉)时,所有按钮,检查按钮等都改变为它们应该看起来像的样子,但标签仍然看起来像默认的摆动标签。这里是什么样子的例子:Java的外观和感觉JTabbedPane

enter image description here

按钮和复选框看起来像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);  
    } 
} 
+0

是别的明确设置标签的外观和感觉? JTabbedPane展示了哪些UI类? – 2012-07-19 02:09:01

+1

适用于['TabComponentsDemo'](http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html#eg)。请编辑您的问题,以包含展示您描述的问题的[sscce](http://sscce.org/)。 – trashgod 2012-07-19 02:10:00

+0

感谢谁编辑了图片 @JeffStorey - 这是默认的摇摆外观 – axl 2012-07-19 02:22:34

回答

3

JTabbedPane被设定在PLAF之前被创建。至少有两个修复程序。

  1. 将创建选项卡式窗格到main线,并把它的调用设置PLAF后。
  2. 请致电SwingUtilities.updateComponentTreeUI(topLevelContainer),如Nested Layout Example所示。该示例允许用户在运行时更改PLAF。
+0

我只是这样做,它的工作!谢谢! +1 – axl 2012-07-19 02:55:52

0

有一对夫妇的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);  
} 

}

+0

当我这样做时,没有什么变化,据我所知。标签仍然看起来像默认的摇摆。 – axl 2012-07-19 02:40:39