2015-05-25 17 views
-1

我有3 JTextArea復位的JTextArea

private static JTextArea area[]; 

文本區中有文本已經但我想更多的手動添加。所以當我關閉框架文本區域得到更新,但它不起作用。 包含文本區域的框架被稱爲f。在關閉框架後打印文本區域的文本按預期工作。

f.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent windowEvent) { 
       area[i].setText(area[i].getText()); 
       System.out.println(area[i].getText()); 
      } 
     }); 
+2

考慮提供一個[可運行示例](https://stackoverflow.com/help/mcve),這說明你的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這會減少混淆和更好的反應 – MadProgrammer

+0

什麼是'我'?可能你忘了在所有textareas上創建一個循環? –

+0

不,我沒有。只有第一行不起作用。與println的線路很好。 – Ben

回答

0

要設置相同的文本值到相同的文本區域中,用相同的索引i

f.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent windowEvent) { 

區域[I]表示.setText(區域[I] .getText()) ; // < ---這行代碼沒有邏輯效果

System.out.println(area[i].getText()); 

    } 
}); 

可能你將需要將其設置到其他地方,或在陣列中的一個使用不同的索引;

+0

不,我不是。假設area [i]的值是「Hello」。然後我寫在「世界」旁邊。當我關閉框架並重新打開它時,我希望該區域成爲「Hello World」 – Ben

+0

@Ben是的。 'area [i] .setText(area [i] .getText());'意味着:「取出寫在文本區域內的所有內容,並使文本區域顯示該文本。按照您的要求併發布[MCVE](https://stackoverflow.com/help/mcve)。 – user1803551

0

也許你想的是:

public class MyFrame extends JFrame { 
    private static JTextArea area[]; 

    static { 
     area = new JTextArea[3]; 
     for(int i = 0; i < area.length; i++) { 
      area[i] = new JTextArea(); 
     } 
    } 

    public MyFrame() throws HeadlessException { 
     super(); 
     createGUI(); 
    } 

    private void createGUI() { 
     setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     setLayout(new GridLayout(0, area.length)); 

     for(JTextArea textArea: area) { 
      JScrollPane scrollPane = new JScrollPane(textArea); 
      add(scrollPane); 
     } 

     addWindowListener(new WindowAdapter() { 
      @Override 
      public void windowClosing(WindowEvent e) { 
       StringBuilder builder = new StringBuilder(); 
       for(JTextArea textArea: area) { 
        builder.append(textArea.getText()); 
       } 

       System.out.println(builder.toString()); 

       for(JTextArea textArea: area) { 
        textArea.setText(builder.toString()); 
       } 
      } 
     }); 
    } 
}