Java 从类创建JFrame并从中获取输入

Java 从类创建JFrame并从中获取输入,java,swing,input,jframe,joptionpane,Java,Swing,Input,Jframe,Joptionpane,我对如何实现我想要实现的目标有点困惑。在我的主Java类中,我希望能够调用多个JFrames来进行设置等操作。我在主类中设置了GUI;我希望我的按钮调用单独的JFrames,然后捕获用户输入,将其返回到主类进行处理。像这样: public class Main extends JFrame{ public Main(){} button.addActionListener(new ActionListener() { public void action

我对如何实现我想要实现的目标有点困惑。在我的主Java类中,我希望能够调用多个JFrames来进行设置等操作。我在主类中设置了GUI;我希望我的按钮调用单独的JFrames,然后捕获用户输入,将其返回到主类进行处理。像这样:

public class Main extends JFrame{
     public Main(){}

     button.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
               new Settings();
          }
     });
}

public class Settings extends JFrame{
     submit.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
               //Capture data and return it to main
          }
     });
}

我不确定我是否会正确处理这件事。我希望所有的小弹出窗口都在不同的Java文件中,以便于使用。

我认为您不需要使用JFrame进行设置。
在Java中,有一个类似于JOptionPane的对象,这就是您需要的。

下面是我的例子:

String[] levels = {"Easy", "Medium", "Gomoku"};
int result = JOptionPane.showOptionDialog(null,
                    "Choose level:", "OX Level",
                    JOptionPane.OK_CANCEL_OPTION,
                    JOptionPane.QUESTION_MESSAGE,
                    null, levels, levels[0]);

这里有一个很好的教程:

我认为您不需要使用JFrame进行设置。
在Java中,有一个类似于JOptionPane的对象,这就是您需要的。

下面是我的例子:

String[] levels = {"Easy", "Medium", "Gomoku"};
int result = JOptionPane.showOptionDialog(null,
                    "Choose level:", "OX Level",
                    JOptionPane.OK_CANCEL_OPTION,
                    JOptionPane.QUESTION_MESSAGE,
                    null, levels, levels[0]);

这里有很好的教程:

通常,动态应用程序设置是由应用程序中的某种“管理员”用户提供的(至少基于我在公司应用程序开发5年后看到的情况)。我不知道你的应用程序有多复杂,但对于一个简单的应用程序,一个带有输入应用程序设置的键/值对的屏幕将是一个“标准”路径。

通常,动态应用程序设置由应用程序中的某种“管理员”用户提供(至少根据我在公司应用程序开发5年后所看到的情况)。我不确定你的应用程序有多复杂,但对于一个简单的应用程序,一个带有键/值对的屏幕用于输入应用程序设置将是一个“标准”路线。

正如Maniek所说,JOptionPane是在单独的框中捕获用户输入的最简单方法。

但是,如果您试图为设置创建一个新窗口,则必须初始化JFrame。我将按如下方式设置我的按钮:

       Settings test = new Settings();                   // creates a new window
       test.setSize(400, 300 );                  // sets the size
       test.setVisible( true );                  // makes it visible

因为当你仅仅调用“new Settings()”时,我认为它不会这样做。

正如Maniek所说,JOptionPane是在单独的框中捕获用户输入的最简单方法。

但是,如果您试图为设置创建一个新窗口,则必须初始化JFrame。我将按如下方式设置我的按钮:

       Settings test = new Settings();                   // creates a new window
       test.setSize(400, 300 );                  // sets the size
       test.setVisible( true );                  // makes it visible

因为当你只调用“new Settings()”时,我认为它不会这样做。

当应用程序退出时,这些设置是否需要保持?当应用程序退出时,这些设置是否需要保持?谢谢你的回复。我有很多设置,用户需要调整(10+)所以我认为制作一个独立的JFrame最好,因为需要很多不同的输入类型(复选框等),不知道你可以用JOptionPane做这么多。我会仔细看看。Maniek,是否可以在同一JOptionPane上显示多个选项?我不希望出现10个不同的弹出窗口,只是一个包含多个输入的弹出窗口。例如,一个winow询问名字、姓氏、勾号框等?哦,我现在明白了。我不知道因此,我们可以将JOptionPane与多个选项一起使用,但是有一种方法可以做到这一点——可能并不优雅方法-然后您可以将不同配置中的设置对象数组放入JOptionPane。如果这不能满足您的期望,您可以始终参照主JFrame创建新JFrame。'Settings s=新设置(JFrame mainFrame)'然后您将获得对主框架中变量的完全访问权。感谢您的回复。我有很多设置,用户需要调整(10+),因此我认为制作一个独立的JFrame最好,因为需要许多不同的输入类型(复选框等),不知道你可以用JOptionPane做这么多。我会仔细看看。Maniek,是否可以在同一JOptionPane上显示多个选项?我不希望出现10个不同的弹出窗口,只是一个包含多个输入的弹出窗口。例如,一个winow询问名字、姓氏、勾号框等?哦,我现在明白了。我不知道因此,我们可以将JOptionPane与多个选项一起使用,但是有一种方法可以做到这一点——可能并不优雅方法-然后您可以将不同配置中的设置对象数组放入JOptionPane。如果这不能满足您的期望,您可以始终参照主JFrame创建新JFrame。“设置s=新设置(JFrame mainFrame);”然后您将获得主框架中变量的完全访问权限。