2015-07-27 3 views
0

У меня есть основной кадр: JFrame> contentFrame> ScrollPane> BigPanel> panel_1TКак обновить JTextField после нажмите кнопку Сохранить

private JPanel contentPane; 
private JPanel BigPanel; 
private JPanel panel_1T; 

В panel_1T, я поставил кнопку продуктов питания со ActionListener:

JButton button_19 = new JButton("FOOD"); 
button_19.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent ae) { 

      newFoodUI nf = new newFoodUI();//Open other class 
      nf.setVisible(true); 
      nf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);  

               } 
               }); 
panel_1T.setLayout(new GridLayout(0, 2, 0, 0)); 
panel_1T.add(button_19); 

Когда пользователь нажимает кнопку FOOD щелчок, новый JFrame в newFoodUI классе будет показано .: JFrame> ContentPane> панель> tabbedPane> panel_3> panel_5

В panel_5, я поставил JTextField:

public static JTextField textField_3; 

textField_3 = new JTextField(); 
panel_5.add(textField_3, "9, 4, fill, default"); 
textField_3.setColumns(10); 

Пользователь будет писать текст в textField_3. Затем пользователь нажимает кнопку SAVE в panel_3, он будет выполнять это:

JButton button_4 = new JButton("SAVE"); 
button_4.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 

       setContentPane(contentPane); 
       panel_3.revalidate(); 
       panel_3.repaint(); 
       panel_3.updateUI(); 

       panel_5.revalidate(); 
       panel_5.repaint(); 
       panel_5.updateUI(); 


       contentPane.revalidate(); 
       contentPane.repaint(); 

      JOptionPane.showMessageDialog(null, "Saved !"); 

     } 
    }); 
    button_4.setBounds(873, 396, 75, 33); 
    contentPane.add(button_4); 
} 

Результат, когда я нажимаю кнопку Сохранить и закрыть, раму в newFoodUI, я заново назад нажмите кнопку FOOD, чтобы проверить, является ли текст Я написал, был спасен или нет. Но он не сохранил текст, который я написал.

ответ

1

Вы должны сохранить значение из текстового поля textField_3.getText() и установить это значение вручную в текстовое поле при показе textField_3.setText(value). Таким образом, вы должны сохранить свою ценность в своем проекте или сохранить где-то постоянный.

+0

Я получил решение с точки зрения кодирования на http://raiseyouup.blogspot.com/2015/07/how-to-save-jtextfieldinput-by-user-in.html – doraemon

1

Есть несколько причин исправить здесь, и я не буду давать вам полный код, но я укажу на некоторые ошибки. Прежде всего, давайте рассмотрим ваш button_19 слушатель

public void actionPerformed(ActionEvent ae) { 

     newFoodUI nf = new newFoodUI();//Open other class 
     nf.setVisible(true); 
     nf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);  

} 

Когда это происходит, это создает совершенно новый объект newFoodUI и не дает ему никаких параметров. Итак, как мог этот кадр узнать о чем-либо, что произошло до его создания, если вы ничего не дадите? Кроме того, вы явно говорите DISPOSE_ON_CLOSE, когда вы можете использовать HIDE_ON_CLOSE, если хотите его повторно использовать.

Затем в вашем слушателе JButton button_4 = new JButton("SAVE"); вы хотите сохранить данные в текстовом поле, но ваша реализация ничего не делает для текстового поля. Вы должны, например, получить текст от textField_3 и записать его в файл или отправить обратно на первый JFrame.

Then there is the issue of using multiple JFrames in the first place.

+0

Спасибо, что о множественных JFrames и нужно изменить JFrame на JDialog .. но я все еще использую 'DISPOSE_ON_CLOSE', потому что он все еще показывает сохраненный текст. – doraemon

+0

@doraemon dispose отлично. Скрытие - это способ не создавать объект с 'new' все время. – milez

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