2012-05-04 26 views
3

JPanelでJTabbedPaneを使用して、JTableを1つのタブに表示し、テキスト、ドロップダウン、他のタブのjbuttonを表示しています。スイングでJPanel画面のフォーカスを失った後、画面にコンテンツが表示されない

最初はうまくいきましたが、画面を他のアプリケーションに最小化または切り替えてアプリケーションに戻っても、データは正しく表示されますが、JTabbedPaneのタブ変更に重大な問題があります。今タブ画面は青色に変わり、データは表示されません(データがあることを期待していますが、再描画や完全なウィンドウを更新していないことを望みます)。

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

再描画を使用しましたが、動作しません。

ウィンドウまたはタブを正しくリフレッシュするためのヘルプが必要です。

+6

問題を示す[SSCCE](http://sscce.org/)を共有してください。 – tenorsax

+0

マックスが言ったように、SSCCEが必要です。それは、おそらくrevalidate()しようとしている? – yoonsi

答えて

3

Event Dispatch Threadを使用して、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"); 
    } 
}); 
関連する問題