2012-10-11 40 views
0

我試圖更新顯示JDialog後的jtextarea,但它不更新任何人都可以幫助我。顯示jdialog後JTextArea不更新

public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setBounds(0, 0, 500, 500); 
     frame.setVisible(true); 
     JDialog dialog = new JDialog(frame); 
     dialog.setModal(true); 
     JPanel panel = new JPanel(); 
     dialog.add(panel); 
     final JTextArea area = new JTextArea(); 
     panel.add(area); 
     dialog.setBounds(100, 100, 200, 200); 
     area.setLineWrap(true); 
     area.setText("bbbbbbbbbbbb"); 
     dialog.setVisible(true); 
     area.setText("zzzz"); 
    } 

回答

4

dialog.setVisible的呼叫被阻止。這意味着area.setText("zzzz")語句將在關閉對話框之後纔會執行。

這是一個簡單的模式對話框

UPDATE

爲了能夠更新這樣的UI的性質,你需要一點點偷偷摸摸...

public class TestDialog { 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException ex) { 
       } catch (InstantiationException ex) { 
       } catch (IllegalAccessException ex) { 
       } catch (UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame(); 
       frame.setBounds(0, 0, 500, 500); 
       frame.setVisible(true); 

       JDialog dialog = new JDialog(frame); 
       dialog.setModal(true); 
       JPanel panel = new JPanel(); 
       dialog.add(panel); 
       final JTextArea area = new JTextArea(); 
       panel.add(area); 
       dialog.setBounds(100, 100, 200, 200); 
       area.setLineWrap(true); 
       area.setText("bbbbbbbbbbbb"); 

       new Thread(new Runnable() { 
        @Override 
        public void run() { 
         SwingUtilities.invokeLater(new Runnable() { 

          @Override 
          public void run() { 
           System.out.println("Hello"); 
           area.setText("zzzz"); 
          } 
         }); 
        } 
       }).start(); 

       dialog.setVisible(true); 
      } 
     }); 
    } 
} 
4

這是模態。將模態設置爲false或在對話框中的某處添加area.setText()。例如。通過在可見的對話框上添加一個監聽器。

+0

所以你可以幫我我想更新我的對話框,但它應該是模態意味着父母應該阻止。 –

+0

@BharatSharma我用一個小例子更新了我的文章,希望它有幫助;) – MadProgrammer