Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击按钮时如何调用方法_Java_Swing - Fatal编程技术网

Java 单击按钮时如何调用方法

Java 单击按钮时如何调用方法,java,swing,Java,Swing,嗨,我正在写一个小软件。下面是它的工作原理:你在文本字段中输入任何数字,当你点击按钮时,它将显示MessageDialog,如果它是素数或不是素数。我在下面有我的代码,但当我点击按钮时,什么都没有发生。我想知道我做错了什么?我希望每个人都能帮助我。谢谢 我试图更改代码,但它不起作用 JLabel lblPrimeNumberChecker = new JLabel("Prime number checker"); lblPrimeNumberChecker.setBounds(1

嗨,我正在写一个小软件。下面是它的工作原理:你在文本字段中输入任何数字,当你点击按钮时,它将显示MessageDialog,如果它是素数或不是素数。我在下面有我的代码,但当我点击按钮时,什么都没有发生。我想知道我做错了什么?我希望每个人都能帮助我。谢谢

我试图更改代码,但它不起作用

    JLabel lblPrimeNumberChecker = new JLabel("Prime number checker");
    lblPrimeNumberChecker.setBounds(160, 11, 117, 14);
    contentPane.add(lblPrimeNumberChecker);


    JButton btnReset = new JButton("Reset");
    btnReset.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            textNum.setText(null);

        }
    });
    btnReset.setBounds(271, 208, 89, 23);
    contentPane.add(btnReset);

    textNum = new JTextField();
    textNum.setBounds(144, 42, 231, 20);
    contentPane.add(textNum);
    textNum.setColumns(10);

    JLabel lblNewLabel = new JLabel("Enter number");
    lblNewLabel.setBounds(62, 45, 82, 14);
    contentPane.add(lblNewLabel);

    JButton btnCheck = new JButton("Check");
    btnCheck.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent checkPrime) {

        }
        private boolean checkPrime(int n) {
            int num=Integer.parseInt(textNum.getText());
             if(num<2) {
                 return false;
             }
             int h=(int)Math.sqrt(n);
             for(int i=2;i<=h;i++) {
                 if(n%i==0) {
                     return false;
                 }
             }
                    return true;     


        }
            void button_clicked() {
                int n=0;
                boolean isPrime=checkPrime(n);
                if(isPrime) {
                    JOptionPane.showMessageDialog(btnCheck, "Prime number", "Result", JOptionPane.INFORMATION_MESSAGE);
                }
                else {
                    JOptionPane.showMessageDialog(btnCheck, "Not prime number", "Result", JOptionPane.INFORMATION_MESSAGE);
                }
            }


            });
    btnCheck.setBounds(62, 208, 89, 23);
    contentPane.add(btnCheck);
JLabel lblPrimeNumberChecker=新的JLabel(“质数检查器”);
lblPrimeNumberChecker.setBounds(160,11,117,14);
contentPane.add(lblPrimeNumberChecker);
JButton btnReset=新JButton(“重置”);
btnReset.addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件e){
textNum.setText(空);
}
});
btnReset.挫折(271208 89 23);
contentPane.add(btnReset);
textNum=新的JTextField();
textNum.setBounds(144,42,231,20);
contentPane.add(textNum);
textNum.setColumns(10);
JLabel lblNewLabel=新JLabel(“输入编号”);
lblNewLabel.立根(62,45,82,14);
contentPane.add(lblNewLabel);
JButton btnCheck=新JButton(“检查”);
btnCheck.addMouseListener(新的MouseAdapter(){
@凌驾
公共无效mouseClicked(MouseEvent checkPrime){
}
私有布尔校验素数(int n){
int num=Integer.parseInt(textNum.getText());

if(nummethod
setBounds()的所有调用)
,在您发布的代码中,暗示您使用的是GUI构建器。您使用的是IDE吗?如果是,是哪一个?GUI构建器对精通编写Swing应用程序的人很有用,因为它们可以节省时间,但我不推荐给学习者。首先,通过自己编写所有代码来学习编写Swing应用程序。例如e、 在使用GUI构建器时,很难学会如何使用布局管理器。在我看来,布局管理器是Swing中非常重要的一部分

我冒昧地重写了你的应用程序。代码如下。假设你还没有这样做,我建议你找到一个很好的资源来帮助你学习如何编写Swing应用程序。我推荐在线教程。我还推荐Kim Topley的书。是的,这本书现在很旧,但仍然非常相关

这是我的密码

import java.awt.BorderLayout;
import java.awt.EventQueue;
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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class PrimeNo implements Runnable {
    JFrame frame;
    JTextField textNum;

    public void run() {
        showGui();
    }

    private boolean checkPrime(int n) {
        if (n < 2) {
            return false;
        }
        int h = (int) Math.sqrt(n);
        for (int i = 2; i <= h; i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }

    private JPanel createButtonsPanel() {
        JPanel buttonsPanel = new JPanel();
        JButton btnReset = new JButton("Reset");
        btnReset.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textNum.setText(null);
            }
        });
        buttonsPanel.add(btnReset);
        JButton btnCheck = new JButton("Check");
        btnCheck.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String str = textNum.getText();
                try {
                    int n = Integer.parseInt(str);
                    if (checkPrime(n)) {
                        JOptionPane.showMessageDialog(frame,
                                                      "Prime number: " + str,
                                                      "Result",
                                                      JOptionPane.INFORMATION_MESSAGE);
                    }
                    else {
                        JOptionPane.showMessageDialog(frame,
                                                      "Not prime number: " + str,
                                                      "Result",
                                                      JOptionPane.INFORMATION_MESSAGE);
                    }
                }
                catch (NumberFormatException xNumFormat) {
                    JOptionPane.showMessageDialog(frame,
                                                  "Not a number: " + str,
                                                  "Error",
                                                  JOptionPane.ERROR_MESSAGE);
                }
            }
        });
        buttonsPanel.add(btnCheck);
        return buttonsPanel;
    }

    private JPanel createInputPanel() {
        JPanel inputPanel = new JPanel();
        JLabel lblNewLabel = new JLabel("Enter number");
        inputPanel.add(lblNewLabel);
        textNum = new JTextField(10);
        inputPanel.add(textNum);
        return inputPanel;
    }

    private void showGui() {
        frame = new JFrame("Prime Number Checker");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(createInputPanel(), BorderLayout.PAGE_START);
        frame.add(createButtonsPanel(), BorderLayout.PAGE_END);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        PrimeNo primeNo = new PrimeNo();
        EventQueue.invokeLater(primeNo);
    }
}
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JOptionPane;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
导入javax.swing.WindowConstants;
公共类PrimeNo实现可运行{
JFrame框架;
JTextField textNum;
公开募捐{
showGui();
}
私有布尔校验素数(int n){
if(n<2){
返回false;
}
inth=(int)Math.sqrt(n);

对于(int i=2;i),您需要将
ActionListener
添加到
btnCheck
,就像您对
btnReset
所做的那样。不要将
MouseListener
添加到
btnCheck