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