gpt4 book ai didi

Java Swing : main class wait until JFrame is closed

转载 作者:行者123 更新时间:2023-12-01 16:15:08 26 4
gpt4 key购买 nike

我需要一些有关简单 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。我希望主类等到框架关闭,但我不知道该怎么做。我是第一次使用 swing。

最佳答案

I want the main class to wait until the frames are closed but I don't know how to do. I'm using swing for the first time.

如果我正确理解您的问题,您需要StartingJFrame一直等到NewParamJFrame关闭然后继续执行。如果是这种情况,那么它就不会发生,因为 JFrame不支持模态。但是JDialog是的,所以你可以只拥有一个JFrame并在 JDialog 中执行参数请求这是谁的 parent JFrame .

有关模态的更好解释,请阅读 How to Use Modality in Dialogs .

另请查看此主题:The Use of Multiple JFrames, Good/Bad Practice?

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

关于Java Swing : main class wait until JFrame is closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62419389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com