Java按钮函数
这是我第一次设计GUI,我相信这可能是一个简单的问题。当使用Java按钮函数,java,swing,user-interface,button,Java,Swing,User Interface,Button,这是我第一次设计GUI,我相信这可能是一个简单的问题。当使用系统按下“取消”按钮时,我试图关闭程序。退出(0),但我不确定在我的代码中放在哪里。我必须创建一个单独的方法吗?我可以在我的ActionPreformed方法中实现它吗 //importing required packages import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.TextField; import java.awt.even
系统按下“取消”按钮时,我试图关闭程序。退出(0)
,但我不确定在我的代码中放在哪里。我必须创建一个单独的方法吗?我可以在我的ActionPreformed
方法中实现它吗
//importing required packages
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.*;
//implements ActionListener
public class primecalc implements ActionListener{
public static void main(String[] args) throws Exception {
//create object instance
primecalc p= new primecalc();
}
private JTextField Calculate,Value;
private JButton calculateb,cancelb;
private JLabel l1,l2;
private JFrame frame;
public primecalc()
{
//Desiging GUI
Calculate = new JTextField(30);
Value = new JTextField(30);
l1 = new JLabel("Prime Number Calculator");
calculateb = new JButton("Calculate");
calculateb.addActionListener(this);//button performs specific action
cancelb = new JButton("Cancel");
cancelb.addActionListener(this);//button performs specific action
//layout
JPanel north = new JPanel(new GridLayout(3,2));
north.add(new JLabel("Enter a number: "));
north.add(Calculate);
north.add(new JLabel("Result: "));
north.add(Value);
north.add(calculateb);
north.add(cancelb);
//frame
JFrame frame = new JFrame("Prime Number Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(north,BorderLayout.NORTH);
frame.pack();
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent event)//buttons action is performed here
{
String input =Calculate.getText();
int n1;
boolean Prime;
try{
n1=Integer.parseInt(input);
Prime=true;
for(int i=2;i<n1;i++){
if((n1 % i) == 0){
Prime=false;
break;
}
}
if(n1==1 || n1==0){
Prime=false;
}
if(Prime){
Value.setText("This is a prime number.");
}else{
Value.setText("This is not a prime number.");
}
}catch(NumberFormatException nfe){
Value.setText("The input is invalid, please try again.");
}
}
}
//导入所需的包
导入java.awt.BorderLayout;
导入java.awt.GridLayout;
导入java.awt.TextField;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JTextField;
导入javax.swing.*;
//实现ActionListener
公共类primecalc实现ActionListener{
公共静态void main(字符串[]args)引发异常{
//创建对象实例
primecalc p=新primecalc();
}
私有JTextField计算,值;
私有按钮计算b,取消b;
专用JLabel l1,l2;
私有JFrame;
公共primecalc()
{
//设计图形用户界面
计算=新的JTextField(30);
值=新的JTextField(30);
l1=新的JLabel(“质数计算器”);
calculateb=新按钮(“计算”);
calculateb.addActionListener(此);//按钮执行特定操作
cancelb=新按钮(“取消”);
cancelb.addActionListener(此);//按钮执行特定操作
//布局
JPanel北=新JPanel(新网格布局(3,2));
添加(新JLabel(“输入一个数字”);
北。加(算);
添加(新JLabel(“结果:”);
增加(价值);
加上(b);
北。添加(取消b);
//框架
JFrame=newjframe(“质数计算器”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
框架。添加(北,边界布局。北);
frame.pack();
frame.setVisible(true);
}
@凌驾
public void actionPerformed(ActionEvent事件)//按钮操作在此执行
{
字符串输入=Calculate.getText();
int-n1;
布尔素数;
试一试{
n1=整数.parseInt(输入);
Prime=true;
对于(int i=2;i对于您的瞳孔,我建议只需在按钮上添加一个MouseListener
或MouseAdapter
myButton.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
System.exit(0);
}
});
对于您的鼠标,我建议只需在按钮上添加一个MouseListener
或MouseAdapter
myButton.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
System.exit(0);
}
});
这样做,
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Cancel")){
System.exit(0);
}
}
这样做,
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Cancel")){
System.exit(0);
}
}
您需要检查事件的来源,然后决定要做什么
@Override
public void actionPerformed(ActionEvent event) {
if (event.getSource() == cancelb) {
System.exit(0);
}
// you continue your code from here
使用这种方法,您只需测试哪个按钮启动了事件。您需要检查事件的来源,然后决定要做什么
@Override
public void actionPerformed(ActionEvent event) {
if (event.getSource() == cancelb) {
System.exit(0);
}
// you continue your code from here
使用这种方法,您只需测试哪个按钮启动了事件。为每个按钮使用不同的匿名ActionListener
// Designing GUI
calculate = new JTextField(30);
value = new JTextField(30);
l1 = new JLabel("Prime Number Calculator");
ActionListener calculatebListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Paste your code here
}
};
calculateb = new JButton("Calculate");
calculateb.addActionListener(calculatebListener);
ActionListener cancelbListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
};
cancelb = new JButton("Cancel");
cancelb.addActionListener(cancelbListener);
...
对每个按钮使用不同的匿名ActionListener
// Designing GUI
calculate = new JTextField(30);
value = new JTextField(30);
l1 = new JLabel("Prime Number Calculator");
ActionListener calculatebListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Paste your code here
}
};
calculateb = new JButton("Calculate");
calculateb.addActionListener(calculatebListener);
ActionListener cancelbListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
};
cancelb = new JButton("Cancel");
cancelb.addActionListener(cancelbListener);
...
在按钮上使用MouseListener
不适合用于此目的。按钮支持ActionListener
s用于此目的。在按钮上使用MouseListener
不适合用于此目的。按钮支持ActionListener
s用于此目的。对于java 8,您仍然可以使用t转换为lambda:arg0->{doSomething();System.Exit(0);}
对于Java8,您仍然可以将其转换为lambda:arg0->{doSomething();System.Exit(0);}
查看这是否有帮助查看这是否有帮助