【问题标题】:Update Jlist when new Jframe closing新 Jframe 关闭时更新 Jlist
【发布时间】:2015-07-19 05:48:30
【问题描述】:

我试图找到一些关于我的问题的信息,但没有成功, 也许 Stackowerflow 太大或者我使用了错误的关键字。

无论如何,我的问题是我刚从敏锐的世界迁移到 Java。 我有一个开发简单服务台软件的项目。 我制作了一个 JFrame 作为 Startscreen,其中包含一些按钮和一个显示案例的 JList。开始框架上的按钮之一是创建一个新案例。该按钮将打开一个新的 Jframe,用户可以在其中输入所需的信息和一个按钮保存:这会将信息保存在列表中。该列表将在不同的类中处理,如下所示。

Start Jframe 打开case Jframe,它将保存在listclass 中的一个列表中,关闭自身并返回Start jframe。 当用户返回到起始 Jfram 并且我希望起始 Jframe 中的 Jlist 自行刷新并显示新保存的案例时 - 我不知道该怎么做。

我想我要在开始 Jframe 中编写一些事件,当 Jframe 关闭时必须响应,但我不知道如何。

这有点难以解释,但我没有上传图片的声誉。

【问题讨论】:

  • 到目前为止你写了什么。你能提供一个SSCCE

标签: java arraylist jframe jlist


【解决方案1】:

我认为您可能需要考虑创建一个新的自定义对话框,该对话框会在您选择按钮时显示。这是我方便参考的示例代码。这里的主要项目是显示对话框的静态方法,以及对话框是模态的事实,因此执行“暂停”直到您关闭对话框,然后允许您捕获对话框保存的数据并从静态方法返回它显示对话框。将此用作模板并根据需要进行修改。更具体地说,“响应”是从方法返回的值。实际上,“响应”将不是一个简单的布尔值(我只是用它来测试逻辑),而是您的 listClass 包含您从对话框的输入控件收集的所有信息。对 getUserInput() 的调用是您想要从您的主 JFrame 代码中执行的操作以开始滚动。 actionPerformed() 方法用于从对话框控件中获取数据并填充包含返回信息的类。

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
public class ConfirmDialog extends JDialog implements ActionListener
{   
        private boolean response = false;
        private JButton btnOK = new JButton("OK");
        private JButton btnCancel = new JButton("Cancel");
        private JPanel contentPane = new JPanel();

        public static boolean getUserInput()
        {
                    return new ConfirmDialog().showDialog();

        }

        private boolean showDialog()
        {
                    setVisible(true);
                    //next line executes only after dialog is disposed,                 since dialog is modal.
                    return response;
        }

        private ConfirmDialog()
        {
                         setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
                    btnOK.setActionCommand("OK");
                    btnCancel.setActionCommand("Cancel");
                    btnOK.addActionListener(this);
                    btnCancel.addActionListener(this);
                    contentPane.add(btnOK);
                    contentPane.add(btnCancel);
                    setContentPane(contentPane);
                    setModal(true);
                    pack();

        }
        public void actionPerformed(ActionEvent e)
        {
                    if(e.getActionCommand().equals(btnOK.getActionCommand()))
                    {
                                response = true;
                    }
                    setVisible(false);
                    dispose();
        }

        /**
         * @param args
         */
        public static void main(String[] args) {
                    // TODO Auto-generated method stub
                    System.out.println(getUserInput());

        }

 }

【讨论】:

  • 谢谢回答。我担心我不得不将框架重新制作为对话框,因为我已经让大型机按预期工作了。在 c sharp 中,我习惯于所有表单都有一个对话框属性,这使得它变得简单,这就是为什么我认为它在 Java 中也是可能的。
猜你喜欢
  • 2011-05-14
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 2013-04-04
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多