2015-05-25 19 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()); 
       } 
      } 
     }); 
    } 
}