3

JPanel で JTabbedPane を使用して、あるタブに JTable を表示し、他のタブにテキスト、ドロップダウン、および jbutton を表示しています。

初めて正常に動作しますが、画面を最小化するか、画面を他のアプリケーションに切り替えてアプリケーションに戻ると、データは正しく表示されますが、JTabbedPane のタブ変更に重大な問題があります。タブ画面が青色になり、データが表示されなくなりました (データがあることを願っていますが、ウィンドウ全体が再描画または更新されていません)。

ブルースクリーンで同じ手順を実行し、JTabbedPane のタブを変更すると、正しいデータが表示されます。

リペイントを使用しましたが、うまくいきません。

ウィンドウまたはタブを正しく更新するために必要なヘルプ。

4

1 に答える 1

3

イベントディスパッチスレッドを介して、Swingコンポーネントのすべての変更(モデル内のデータの変更やタブの手動切り替えを含む)を行っていることを確認してください。Swingを使用すると、開発者はスレッドセーフを無視できますが、これにより未定義の動作が発生します。

JComboBoxのモデルのコンテンツを変更する例を次に示します。

final DefaultComboBoxModel model = (DefaultComboBoxModel) comboBox.getModel();
EventQueue.invokeLater(new Runnable(){
    public void run(){
        // Add all Swing component modification code here..
        // The line of code below is but an example of what you could do
        model.addElement("String element");
    }
});
于 2012-09-11T11:43:28.080 に答える