单击SAVE按钮后如何更新JTextfield

时间:2015-07-27 12:02:28

标签: java eclipse jbutton jtextfield

我有一个主框架:JFrame> contentFrame> ScrollPane> BigPanel> panel_1T

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

在panel_1T中,我放了一个带有actionListener的FOOD按钮:

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按钮时,将显示newFoodUI类中的新JFrame: 的JFrame>&的contentPane GT;面板>选项卡窗格> 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。然后用户单击panel_3中的SAVE按钮,它将执行以下操作:

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);
}

结果是,当我单击SAVE按钮并关闭newFoodUI中的Frame时,我将通过单击FOOD按钮重新打开,以检查我写的文本是否已保存。但它没有保存我写的文字。

2 个答案:

答案 0 :(得分:1)

您必须保存textfeld textField_3.getText()中的值,并在显示textField_3.setText(value)时手动将此值设置为textfeld。因此,您必须将您的价值保留在项目中或在某处持久保存。

答案 1 :(得分: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.