0

我在我的项目中使用 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 中,我调用createTabbedPane();创建 JTabbedPane 的方法:

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();
        }
    });

}

我做错了什么?

4

2 回答 2

0

我决定了我的问题。我找到了 2 个解决方案。第一个解决方案是添加以下代码:

taskTabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);

另一种解决方案是添加以下代码:

SwingUtilities.updateComponentTreeUI(taskTabbedPane);

谢谢大家的帮助

于 2015-11-13T18:37:06.657 回答
0

在我看来,JTabbedPane 是在安装 JGoodies L&f 之前创建的。这应该可以解释为什么更新组件树会影响 JTabbedPane UI 委托。您的方法 #createTabbedPane 不会创建 JTabbedPane,它只是对其进行配置。

不需要更改选项卡布局策略。只有在运行时更改 L&f 时才需要更新组件树。

顺便提一句。所有 Swing 初始化都必须在 EDT 中进行,因此有必要在 EDT 中创建 GUI。

于 2016-01-14T13:52:44.717 回答