2011-09-15 15 views
3

ポートが開いているかどうかを教えてください(利用可能な機能)。 JTextFieldの内容を更新して、すべてを更新し続けますか?

String newavail = "" + available(9002) ; 


JTextField tf1 = new JTextField("Is Port 9002(GWT Pet Store) available? \n" + newavail); 

しかし、私は実行しているGUIの外のポートを閉じる場合には、すぐにこの変更が反映されていません。そして、私はこのように私のGUIプログラムでは、その関数を呼び出します。あなたはrevalidate()コマンドを使うことができると読んでいますが、どうやって使うのですか?

+2

あなたの主な問題は、スイングされていません。ポート9002の可用性が変化しているときに通知を受ける方法を見つけなければなりません。可用性が変更された場合は、そのポートの可用性を定期的にチェックし、GUIを(SwingUtilities.invokeLater()で)更新する 'Thread'を作成する必要があります。 – jfpoilpret

+0

@jfp - 非常にありがとう、これは非常に参考になるコメントです – Coffee

答えて

3

イベントディスパッチスレッドの外側でポートが閉じていると仮定すると、を使用して、JTextFieldインスタンスのテキストを可用性ステータスの変更を反映するように設定する必要があります。


// we're outside the EDT 
SwingUtilities.invokeLater(new Runnable(){ 
    @Override 
    public void run(){ 
     // modify Swing component here 
    } 
}); 
+0

これは面白いです - 別のSwingUtilitiesクラスがあります。私はそれに感謝しています。 – Coffee

+1

@Adel、特に['SwingUtilities.invokeLater(...)'](http://download.oracle.com/javase/6/docs/api/javax /swing/SwingUtilities.html#invokeLater%28java.lang.Runnable%29)。編集を参照してください! – mrkhrts

関連する問題