对此有很多疑问,但他们无法帮助我或我不理解..
基本上我希望用户在系统返回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);
}
}
对不起,如果只是我缺乏理解并感谢您的帮助。
编辑: 也许我解释不正确或显示不正确。让我们说如果系统回到主系统它将做我不想要的事情,因此我希望用户按下按钮返回主系统或做“事情”。很抱歉有不好的解释,包括这个。
这个课程与我的工作是分开的,我只是用它来测试东西......在我的项目中,用户可以从几个按钮中选择(假设主要方法是这种情况下的菜单)。用户按下按钮进入新的窗口/框架,如果程序没有暂停或等待按下按钮,它将返回主方法。
答案 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,您正在等待用户的输入。所以基本上你不关心你的程序执行什么,当用户按下按钮时...... (因此它返回的地方并不重要)