Java按钮函数

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

这是我第一次设计GUI,我相信这可能是一个简单的问题。当使用
系统按下“取消”按钮时,我试图关闭程序。退出(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);}
查看这是否有帮助查看这是否有帮助