java-SWING-this.dispose之后保存数据

java-SWING-this.dispose之后保存数据,java,swing,user-interface,Java,Swing,User Interface,所以基本上我用Java制作Swing应用程序,我有一个列表,用户可以在其中通过在文本字段和按钮中键入来添加项(当用户单击该按钮时,窗口将被释放并打开新窗口)。在新窗口中,我只有一个按钮,它会把我拉回到第一个窗口,但插入列表的数据会被删除。有没有办法避免这种情况(我知道有,但如果有人能向我解释这会有多好:) 提前谢谢 您可以使用相同的空间来显示多个视图 提示:单击任何JButton时,只需在多个JPanel之间切换即可 阅读更多关于 如果你想坚持目前的方法,那就试试 如果需要,还可以重写wind

所以基本上我用Java制作Swing应用程序,我有一个列表,用户可以在其中通过在文本字段和按钮中键入来添加项(当用户单击该按钮时,窗口将被释放并打开新窗口)。在新窗口中,我只有一个按钮,它会把我拉回到第一个窗口,但插入列表的数据会被删除。有没有办法避免这种情况(我知道有,但如果有人能向我解释这会有多好:)

提前谢谢

您可以使用相同的空间来显示多个视图

提示:单击任何
JButton
时,只需在多个
JPanel
之间切换即可

阅读更多关于


如果你想坚持目前的方法,那就试试

如果需要,还可以重写
windowClosing()
方法

您可以覆盖
JFrame
setVisible()
方法,并检查
JFrame
的可见性



疑问:为什么要同时使用扩展
JFrame
类和在类中添加
JFrame
本身的实例?

谢谢,我知道我可以不使用“扩展”,但我喜欢它的方式。
但我喜欢它的方式。
-这是错误的,令人困惑。“FLIPJavaJava阅读上面的疑义部分。您也可以考虑使用<代码> jCalue<代码>或代码> joptPANGE<代码>来收集具体的细节,这仍然要求您从视图中返回结果…作为建议<代码>扩展JFrase和<代码>私有JFrror框架;code>提出了一个问题,即哪个框架是实际可见的,并且实际执行工作。通常,不需要从
JFrame
扩展,因为您没有向类添加任何附加功能
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class first extends JFrame {

    public static final long serialVersionUID = 1L;

    private JFrame frame;
    private JButton button, button2;
    private JComboBox box;
    private JScrollPane scroll;
    private DefaultListModel defListModel = new DefaultListModel();
    private JList list;
    private JPanel panel;
    private JTextField field;

    public First() {

        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch(Exception e) {
            e.printStackTrace();
        }

        frame = new JFrame("Hello Eclipse");

        panel = new JPanel();

        field = new JTextField("", 25);
        panel.add(field);

        button = new JButton("Click to add to the list");
        button.setFocusPainted(false);
        button.setToolTipText("Hovered Over ME");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource() == button){
                    String text = field.getText();
                    defListModel.addElement(text);
                    JOptionPane.showMessageDialog(frame, "Added to the list", "Done",      JOptionPane.INFORMATION_MESSAGE);
                }
            }
        });
        panel.add(button);

        button2 = new JButton("New Window");
        button2.setFocusPainted(false);
        button2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(e.getSource() == button2){
                    NewWindow window = new NewWindow();
                    frame.setVisible(false);

                }
            }
        });
        panel.add(button2);

        String[] movies = {};

        for(String movie : movies){
            defListModel.addElement(movie);
        }

        list = new JList(defListModel);

        list.setFixedCellWidth(150);
        list.setFixedCellHeight(30);

        scroll = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        panel.add(scroll);

        frame.add(panel);
        frame.setSize(400, 400);
        frame.setVisible(true);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        frame.setLocationRelativeTo(null);
    }

    public static void main(String[] args) {
        new First();
    }

}
frame.addWindowListener(new WindowAdapter() {
    @Override
    public void windowDeactivated(WindowEvent arg0) {
        System.out.println("windowDeactivated");
        // save the data
    }
});