2015-05-25 3 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

Что такое 'i'? Возможно, вы забыли создать петлю над всеми текстовыми областями? –

+0

Нет, я не знаю. только первая строка не работает. Строка с println работает хорошо. – Ben

ответ

0

Вы устанавливаете тот же текстовое значение в той же области текста, обозначаемого одним и тем же индексом я

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

области [я] .setText (область [я] .getText()) ; // < --- эта строка кода не имеет никакого логического эффекта

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

    } 
}); 

Возможно, вам нужно будет установить его в другое место, или использовать другой индекс в одном из массивов;

+0

Нет, я не. Допустим, что значение области [i] равно «Привет». Затем я пишу рядом с ним «Мир». Когда я закрываю рамку и снова ее открываю, я хочу, чтобы область была «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()); 
       } 
      } 
     }); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^