我在我的项目中使用jgoodies。它仅适用于某些组件。
正如您所见,JButton,JTextField,JLabel,JFrame已成功修改。但JTabbedPane和JRadioButton尚未修改。 Jgoodies对他们没有影响。当用户选择菜单项时创建JTabbedPane。你可以在这段代码中看到它:
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
createTabbedPane();
fieldForName.requestFocus();
}
});
在这个ActionListener中,我调用创建JTabbedPane的方法createTabbedPane();
:
private static void createTabbedPane() {
taskTabbedPane.setBounds(50, 50, 1000, 550);
taskTabbedPane.addTab("Задача", createTasksMainInfoPanel());
taskTabbedPane.addTab("Данные", null);
taskTabbedPane.setEnabledAt(1, false);
}
我设定了主要方法:
public static void main(String[] args) {
// TODO Auto-generated method stub
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(new Plastic3DLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
createAndShowGui();
}
});
}
我做错了什么?
答案 0 :(得分:0)
我决定了我的问题。我找到了2个解决方案 第一个解决方案是添加此代码:
taskTabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
另一个解决方案是添加此代码:
SwingUtilities.updateComponentTreeUI(taskTabbedPane);
谢谢大家的帮助
答案 1 :(得分:0)
在我看来,JTabbedPane是在安装JGoodies L& f之前创建的。这应该解释为什么更新组件树会影响JTabbedPane UI委托。您的方法#createTabbedPane不会创建JTabbedPane,它只是配置它。
不需要更改选项卡布局策略。只有在运行时更改L& f时才需要更新组件树。
顺便说一下。所有Swing初始化必须在EDT中进行,因此有必要在EDT中创建GUI。