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

    });

この ActionListenercreateTabbedPane();で、JTabbedPane を作成するメソッドを呼び出します。

private static void createTabbedPane() {
    taskTabbedPane.setBounds(50, 50, 1000, 550);
    taskTabbedPane.addTab("Задача", createTasksMainInfoPanel());
    taskTabbedPane.addTab("Данные", null);
    taskTabbedPane.setEnabledAt(1, false);
}

私はlookを設定し、mainメソッドに落ちました:

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

JGoodies L&f がインストールされる前に JTabbedPane が作成されるようです。これで、コンポーネント ツリーの更新が JTabbedPane UI デリゲートに影響する理由が説明できるはずです。メソッド #createTabbedPane は JTabbedPane を作成せず、構成するだけです。

タブ レイアウト ポリシーの変更は必要ありません。コンポーネント ツリーの更新は、実行時に L&f を変更する場合にのみ必要です。

ところで。Swing の初期化はすべて EDT で行う必要があるため、EDT で GUI を作成する必要があります。

于 2016-01-14T13:52:44.717 に答える
0

私は自分の問題を決めました。私は2つの解決策を見つけました。最初の解決策は、次のコードを追加することです。

taskTabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);

別の解決策は、次のコードを追加することです。

SwingUtilities.updateComponentTreeUI(taskTabbedPane);

ご協力ありがとうございました

于 2015-11-13T18:37:06.657 に答える