当前位置: 首页 > 面试题库 >

Java Swing:主类,直到关闭JFrame

赏光霁
2023-03-14
问题内容

我需要一个简单的Java应用程序一些帮助,该应用程序使用两个jframe来获取一些输入参数。这是我的代码的草图:

//second jframe, called when the button OK of the first frame is clicked
public class NewParamJFrame extends JFrame{
  ...
}

//first jframe
public class StartingJFrame extends JFrame{
  private static  NewParamJFrame newPFrame = null;
  private JTextField gnFilePath;
  private JButton btnOK;

  public StartingJFrame(){
            //..
    initComponents();
  }

  private void initComponents(){
     btnOK.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent e){
        try{
        EventQueue.invokeAndWait(new Runnable(){
           public void run() {
               try {
               newPFrame = new NewParamJFrame();
               newPFrame.setVisible(true);
               } catch (Exception e) {
               e.printStackTrace();
               }
           }
         });
        }
        catch(InvocationTargetException e2) {} 
        catch(InterruptedException e1){}
        dispose();
      }
  }

  public String getText(){
       return gnFilePath.getText();
  }
}

public class Main {
  private static StartingJFrame begin = null;
  public static void main(String[] args) {
     try{
        EventQueue.invokeAndWait(new Runnable(){
            public void run() {
                try {
                    begin = new StartingJFrame();
                    begin.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    catch(InvocationTargetException e) {} 
    catch(InterruptedException e1){}

    String s= begin.getText();

    //...use s ...
  }
}

调用getText()会导致NullPointerException。我希望主要的班级等到关闭框架,但我不知道该怎么做。我是第一次使用秋千。


问题答案:

我希望主要的班级等到关闭框架,但我不知道该怎么做。我是第一次使用秋千。

如果我正确理解了您的问题,则需要StartingJFrame等到NewParamJFrame关闭后再继续执行。如果是这种情况,则不会发生,因为JFrame不支持模式。但是JDialog可以,因此您只能拥有一个JFrame,并在JDialog其父项是this的情况下执行参数请求JFrame

有关模态的更好说明,请阅读如何在对话框中使用模态。

还请看一下以下主题:使用多个JFrame,良好/不良做法?

无论如何,您可能都会面临一个新问题:JFrame如果用户在不输入任何参数的情况下关闭/取消对话框,该怎么办?这怎么会JFrame知道该对话框中发生了什么?此答案描述了一种方法。您将看到该示例是关于登录对话框的,但问题与此相似:对话框如何通知其父框架该过程如何进行?



 类似资料:
  • 我有一个Spring启动应用程序在负载均衡器后面的两台服务器上运行。 我定义了一个关闭钩子,它将应用程序中的/healthcheckendpoint设置为返回404错误,等待30秒以完成所有操作,然后停止JVM。负载平衡器被配置为在看到404错误时将服务器置于维护模式。(这与“停机”状态不同——允许在维护模式下完成飞行中的连接) 问题是负载平衡器从未看到这些404响应。相反,它会拒绝第4层TCP连

  • 我从主线程调用了下面的代码,使用ExecutorService池并启动一个线程来处理找到的每个文件。我正在尝试了解当主线程被kill命令终止时ExecutorService的行为。生成的线程会发生什么?一旦完成工作,它们会立即被杀还是终止? 还有没有更好/更安全的方法来编写下面的代码段,特别是如果我在无限循环中运行这部分,例如等待文件被放到输入目录并分配线程来处理它们?在这种情况下,我应该创建一个

  • private boolean shutdown; private boolean shutdownNowed; private boolean terminated;

  • 问题内容: 当前,我尝试创建一个打开文件(带有相应应用程序)的单元测试,然后测试运行应等待程序关闭。 有谁知道如何实现(尽可能简单)我的计划? 问题答案: 从文档: 一旦关联的应用程序启动,startfile()就会返回。没有选择等待应用程序关闭的选项,也没有办法检索应用程序的退出状态。 如果您知道用于打开文件的应用程序的路径,则可以使用subprocess.Popen()来等待。 请参阅:htt

  • 想改进这个问题吗 通过编辑这篇文章,更新问题,使其只关注一个问题。 有没有办法让< code>ViewPager不是水平滚动,而是垂直滚动?!

  • 我有一个很奇怪的问题快把我逼疯了。 我有一个Ruby服务器和一个Flash客户端(动作脚本3)。这是一个多人游戏。 问题是,一切都在完美地工作,然后,突然,一个随机的球员停止接收数据。当服务器因为不活动而关闭连接时,大约20-60秒后,客户端接收到所有缓冲的数据。 null 我不认为这是一个操作系统/网络问题,因为我已经从一个位于西班牙的VPS换到了位于爱尔兰的亚马逊EC2,问题仍然存在。 我觉得