按下等待按钮

时间:2014-09-05 16:44:13

标签: java swing button actionlistener

对此有很多疑问,但他们无法帮助我或我不理解..

基本上我希望用户在系统返回main方法之前按下按钮。在这种情况下,如果系统返回主方法,系统将退出。

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class test123 implements ActionListener{


JTable table;
JButton button;
JFrame frame; 

public test123 (){

    frame = new JFrame();
    frame.setLayout(null);

    button = new JButton("Finish");
    button.setBounds(200, 10, 70, 40);
    button.addActionListener(this);

    frame.add(button);


    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    frame.setSize(600, 200);
    frame.setVisible(true);
    frame.setTitle("TEst123");  
}


public void actionPerformed(ActionEvent e){
    if(e.getSource() == button){
        System.out.println("message....");
    }
}

public static void main(String arg[]){
    test123 gui = new test123();

    System.exit(0);

}
}

对不起,如果只是我缺乏理解并感谢您的帮助。

编辑: 也许我解释不正确或显示不正确。让我们说如果系统回到主系统它将做我不想要的事情,因此我希望用户按下按钮返回主系统或做“事情”。很抱歉有不好的解释,包括这个。

这个课程与我的工作是分开的,我只是用它来测试东西......在我的项目中,用户可以从几个按钮中选择(假设主要方法是这种情况下的菜单)。用户按下按钮进入新的窗口/框架,如果程序没有暂停或等待按下按钮,它将返回主方法。

1 个答案:

答案 0 :(得分:1)

快速回答是Andrew Thompson在评论中所写的:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;

public class test123 implements ActionListener {

    JTable table;
    JButton button;
    JFrame frame;

    public test123() {

        frame = new JFrame();
        frame.setLayout(null);

        button = new JButton("Finish");
        button.setBounds(200, 10, 70, 40);
        button.addActionListener(this);

        frame.add(button);

        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
        frame.setSize(600, 200);
        frame.setVisible(true);
        frame.setTitle("TEst123");
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == button) {
            System.out.println("message....");
//          System.exit(0);
            frame.dispose(); // better than exit
        }
    }

    public static void main(String arg[]) {
        test123 gui = new test123();
    }

}

但Java类名称应以大写test123开头 - > Test123(但你肯定能找到更好的名字)。

为什么不扩展JFrame?

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Test123 extends JFrame implements ActionListener {

    private static final long serialVersionUID = 3378774311250822914L;

//  private JTable table;
    private JButton button;
//  JFrame frame;

    public Test123() {

//      frame = new JFrame();
        this.setLayout(null);

        button = new JButton("Finish");
        button.setBounds(200, 10, 70, 40);
        button.addActionListener(this);

        this.add(button);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setSize(600, 200);
        this.setTitle("Test123");
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == button) {
            System.out.println("message....");
//          System.exit(0);
            this.dispose();
        }
    }

    public static void main(String arg[]) {
        Test123 gui = new Test123();
    }

}

Concurrency in Swing tutorial中阅读更多内容,了解如何处理调度线程中长时间运行的任务......


从您的问题看来,您不知道swing应用程序的行为方式。您创建一个GUI,您正在等待用户的输入。所以基本上你不关心你的程序执行什么,当用户按下按钮时...... (因此它返回的地方并不重要)