从类创建一个JFrame并从中获取输入

时间:2013-05-09 19:11:24

标签: java swing input jframe joptionpane

我对如何实现我想要实现的东西感到有些困惑。在我的主Java类中,我希望能够为设置之类的东西调用多个JFrame。我在主类中设置了GUI;我希望我的按钮调用单独的JFrame,然后捕获用户输入,将其返回到主类进行处理。像这样:

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文件中使用我的所有小弹出窗口以便于使用。

3 个答案:

答案 0 :(得分:3)

我认为您不需要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]);

这里有一个很好的教程:How to Make Dialogs

答案 1 :(得分:0)

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

答案 2 :(得分:0)

正如Maniek所说,JOptionPane是在单独的框中捕获用户输入的最简单方法。 http://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html

但是如果您尝试为设置创建新窗口,则必须初始化JFrame。我会像我这样设置我的按钮:

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

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