[英]JTextField gui help for number factoring calculator in java
嗨,我正在制作一个基于GUI的数字分解计算器,您将一个数字放在JtextField中,然后按一个按钮以开始分解。 这些因素将同时出现(在另一个JTextField中),两次之间使用while循环之间要有5秒钟的延迟...唯一的问题是我似乎无法弄清楚如何在这些因素之间有5秒钟的延迟。
这是我的代码:
`
package gui;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JButton;
class CloseListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
}
public class MyWin extends JFrame implements ActionListener{
JTextField name, number, OutputName, OutputNumber;
JButton CreateName, CreateNumber, clear, ok;
MyWin(String title){
super(title);
this.setSize(750,625);
this.init();
this.setVisible(true);
}
void init() {
JLabel lname = new JLabel("What is your name?:");
name = new JTextField(10);
JLabel lnumber = new JLabel("What number do you want to to factor?");
number = new JTextField(10);
OutputName = new JTextField(50);
OutputNumber = new JTextField(50);
JPanel panel = new JPanel();
panel.add(lname);
panel.add(name);
panel.add(lnumber);`enter code here`
panel.add(number);
panel.add(OutputName);
panel.add(OutputNumber);
name.setBounds(375,0,100,25);
lname.setBounds(250,0,150,25);
number.setBounds(425,30,100,25);
lnumber.setBounds(175,30,225,25);
OutputName.setBounds(75,115,300,25);
OutputNumber.setBounds(375,115,300,25);
CreateName = new JButton("Create Name");
CreateNumber = new JButton("Factor number");
clear = new JButton("Clear");
ok = new JButton("Close App");
panel.add(CreateName);
panel.add(CreateNumber);
panel.add(clear);
panel.add(ok);
panel.setLayout(null);
CreateName.setBounds(150,60,150,25);
clear.setBounds(300,60,150,25);
ok.setBounds(450,60,150,25);
CreateNumber.setBounds(295,85,160,25);
CreateName.addActionListener(this);
CreateNumber.addActionListener(this);
clear.addActionListener(this);
ok.addActionListener(new CloseListener());
panel.setBackground(Color.GREEN);
this.add(panel);
}
public void actionPerformed(ActionEvent event) {
if(event.getSource() == CreateName){
String myname = "";
myname = name.getText();
OutputName.setText("Hi " + myname + "!");
}
else if(event.getSource() == CreateNumber){
int mynumber = Integer.parseInt(number.getText());
int x = 1;
if(mynumber == 1){
OutputNumber.setText("1 is only divisible by itself");
}
else if(mynumber > 0){
while(mynumber >= x){
int y = mynumber / x;
if(mynumber % x == 0){
if(mynumber == x * y){
OutputNumber.setText(y + " and " + x);
}
x = x + 1;
}
else if(mynumber != y * mynumber){
x = x + 1;
}
else{
x = x + 1;
}
}
}
}
else if(event.getSource() == clear){
OutputName.setText("");
OutputNumber.setText("");
}
}
}
`
首先:
不要使用空布局。 Swing旨在与布局管理器一起使用。 阅读有关布局管理器的Swing教程中的部分,以获取更多信息和工作示例。
变量名称不应以大写字母开头。 您的大多数姓名正确,但有些不正确。 始终如一!!!
唯一的问题是,我似乎无法弄清楚如何在因素之间延迟5秒。
我会计算所有因素并将它们放在列表中。 然后,您可以使用Swing Timer
安排因素的显示。 当计时器触发时,您从列表中删除一个因子并显示它。 当列表为空时,停止计时器。 阅读Swing教程中有关如何使用Swing计时器的部分, 以获取更多信息和示例。
您也可以查看这个简单的Timer示例 。
这些因素将出来(在另一个JTextField中)
也许您可以使用JTextArea并在文本区域中添加新行以显示因子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.