Java 如何暂停具有main()的程序,直到按下GUI中的按钮为止?

Java 如何暂停具有main()的程序,直到按下GUI中的按钮为止?,java,swing,user-interface,jframe,actionlistener,Java,Swing,User Interface,Jframe,Actionlistener,我是Java Swing的新手。 我有两个Java文件。一个包含main(),另一个是GUI文件 客户 桂 请指导我,如果这是一个不合适的问题,那么请向我推荐您认为我应该阅读的文章,以了解概念。您可以使用回调机制 我已经在这里发布了一个示例代码。请看一看 interface Callback { void execute(String value); } abstract class GUI extends JFrame implements ActionListener, Callb

我是Java Swing的新手。 我有两个Java文件。一个包含
main()
,另一个是GUI文件

客户 桂
请指导我,如果这是一个不合适的问题,那么请向我推荐您认为我应该阅读的文章,以了解概念。

您可以使用回调机制

我已经在这里发布了一个示例代码。请看一看

interface Callback {
    void execute(String value);
}

abstract class GUI extends JFrame implements ActionListener, Callback{
     ...
     // do not provide the implementation of `execute` method here

     ...
     public void actionPerformed(ActionEvent e) {
        s1 = t1.getText();
        // now callback method is called
        execute(s1);
     }
}
您的主类将如下所示:

public static void main(String args[]) {
    gui = new GUI() {

        @Override
        public void execute(String value) {
            System.out.println("Entered value:" + value);
        }
    };
}

您可以使用回调机制

我已经在这里发布了一个示例代码。请看一看

interface Callback {
    void execute(String value);
}

abstract class GUI extends JFrame implements ActionListener, Callback{
     ...
     // do not provide the implementation of `execute` method here

     ...
     public void actionPerformed(ActionEvent e) {
        s1 = t1.getText();
        // now callback method is called
        execute(s1);
     }
}
您的主类将如下所示:

public static void main(String args[]) {
    gui = new GUI() {

        @Override
        public void execute(String value) {
            System.out.println("Entered value:" + value);
        }
    };
}

您可以使用回调机制

我已经在这里发布了一个示例代码。请看一看

interface Callback {
    void execute(String value);
}

abstract class GUI extends JFrame implements ActionListener, Callback{
     ...
     // do not provide the implementation of `execute` method here

     ...
     public void actionPerformed(ActionEvent e) {
        s1 = t1.getText();
        // now callback method is called
        execute(s1);
     }
}
您的主类将如下所示:

public static void main(String args[]) {
    gui = new GUI() {

        @Override
        public void execute(String value) {
            System.out.println("Entered value:" + value);
        }
    };
}

您可以使用回调机制

我已经在这里发布了一个示例代码。请看一看

interface Callback {
    void execute(String value);
}

abstract class GUI extends JFrame implements ActionListener, Callback{
     ...
     // do not provide the implementation of `execute` method here

     ...
     public void actionPerformed(ActionEvent e) {
        s1 = t1.getText();
        // now callback method is called
        execute(s1);
     }
}
您的主类将如下所示:

public static void main(String args[]) {
    gui = new GUI() {

        @Override
        public void execute(String value) {
            System.out.println("Entered value:" + value);
        }
    };
}

现在我在打电话,所以我不能帮你写代码,我会试着让你理解这个概念:用户输入,按钮点击是5秒钟后发生的事情,就像30分钟后可能发生的事情一样。所以,是的,你可以让睡眠成为主要的,有时候,你希望得到一个输入,等待.s1得到一个值,等等

但是,我认为在这里这样做是不对的。最好的方法是在用户单击按钮时调用回调。它是使用接口完成的

首先,您可以声明一个名为
OnRequestClick
的接口,在这里实现
OnRequestClick(字符串消息)方法

消息将是s1的文本

现在,在GUI类中创建一个OnRequestClick命名侦听器类型的新字段,并将其放入构造函数中

现在,在您创建GUI对象的地方,编译器要求您为OnRequest提供一个代码。单击“执行”,它将是用户按下tbe按钮时执行的代码

好吧,righr现在我说的是错误的:它没有被解雇,因为我们没有调用listener.onRequestClick()


因此,在您的actionPerformed中添加listener.onRequestClick(s1.getText());因此,在您的主要内容中,您将获得ebemt和文本。

现在我正在打电话,因此我无法帮助您编写代码。我将尝试让您了解这一概念:用户输入、按钮单击是5秒后发生的事情,就像30分钟后可能发生的事情一样。所以,是的,你可以让睡眠成为主要的,有时候,你希望得到一个输入,等待.s1得到一个值,等等

但是,我认为在这里这样做是不对的。最好的方法是在用户单击按钮时调用回调。它是使用接口完成的

首先,您可以声明一个名为
OnRequestClick
的接口,在这里实现
OnRequestClick(字符串消息)方法

消息将是s1的文本

现在,在GUI类中创建一个OnRequestClick命名侦听器类型的新字段,并将其放入构造函数中

现在,在您创建GUI对象的地方,编译器要求您为OnRequest提供一个代码。单击“执行”,它将是用户按下tbe按钮时执行的代码

好吧,righr现在我说的是错误的:它没有被解雇,因为我们没有调用listener.onRequestClick()


因此,在您的actionPerformed中添加listener.onRequestClick(s1.getText());因此,在您的主要内容中,您将获得ebemt和文本。

现在我正在打电话,因此我无法帮助您编写代码。我将尝试让您了解这一概念:用户输入、按钮单击是5秒后发生的事情,就像30分钟后可能发生的事情一样。所以,是的,你可以让睡眠成为主要的,有时候,你希望得到一个输入,等待.s1得到一个值,等等

但是,我认为在这里这样做是不对的。最好的方法是在用户单击按钮时调用回调。它是使用接口完成的

首先,您可以声明一个名为
OnRequestClick
的接口,在这里实现
OnRequestClick(字符串消息)方法

消息将是s1的文本

现在,在GUI类中创建一个OnRequestClick命名侦听器类型的新字段,并将其放入构造函数中

现在,在您创建GUI对象的地方,编译器要求您为OnRequest提供一个代码。单击“执行”,它将是用户按下tbe按钮时执行的代码

好吧,righr现在我说的是错误的:它没有被解雇,因为我们没有调用listener.onRequestClick()


因此,在您的actionPerformed中添加listener.onRequestClick(s1.getText());因此,在您的主要内容中,您将获得ebemt和文本。

现在我正在打电话,因此我无法帮助您编写代码。我将尝试让您了解这一概念:用户输入、按钮单击是5秒后发生的事情,就像30分钟后可能发生的事情一样。所以,是的,你可以让睡眠成为主要的,有时候,你希望得到一个输入,等待.s1得到一个值,等等

但是,我认为在这里这样做是不对的。最好的方法是在用户单击按钮时调用回调。它是使用接口完成的

首先,您可以声明一个名为
OnRequestClick
的接口,在这里实现
OnRequestClick(字符串消息)方法

消息将是s1的文本

现在,在GUI类中创建一个OnRequestClick命名侦听器类型的新字段,并将其放入构造函数中

现在,在您创建GUI对象的地方,编译器要求您为OnRequest提供一个代码。单击“执行”,它将是用户按下tbe按钮时执行的代码

好吧,里格尔,现在我说的是错误的:它没有被解雇,因为我们没有给李斯特打过电话