[英]Java/AWT/Swing: how to distinguish the pressed enter or return key
[英]How to enter two digits from same textfield in AWT/SWING
我创建了一个简单的计算器,我在其中输入两个不同文本字段中的两个操作数,并且运行良好。 但我需要从同一个文本字段中获取两个输入。 我应该做哪些改变?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Calculation_ActionEvent extends JFrame implements ActionListener
{
JFrame f;
JLabel l;
JTextField tf1, tf2, tf3;
JButton b1, b2, b3, b4 ,b5, b6;
Calculation_ActionEvent(String s)
{
f = new JFrame("Calculation");
f.setLayout(null);
l = new JLabel("Enter two numbers : ");
tf1 = new JTextField();
tf2 = new JTextField();
tf3 = new JTextField();
b1 = new JButton("+");
b2 = new JButton("-");
b3 = new JButton("*");
b4 = new JButton("/");
b5 = new JButton("equals");
b6 = new JButton("C");
f.add(l);
f.add(tf1);
f.add(tf2);
f.add(tf3);
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
tf1.setBounds(180,100,50,30);
tf2.setBounds(320,100,50,30);
tf3.setBounds(250,420,50,30);
b1.setBounds(250,180,50,30);
b2.setBounds(350,260,50,30);
b3.setBounds(150,260,50,30);
b4.setBounds(250,340,50,30);
b5.setBounds(230,260,90,30);
b6.setBounds(250,100,50,30);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
//b5.addActionListener(this);
b6.addActionListener(this);
f.setSize(550,550);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
int num1= Integer.parseInt(tf1.getText());
int num2= Integer.parseInt(tf2.getText());
String s1 = e.getActionCommand();
if(s1.equals("C"))
{
tf1.setText("0");
tf2.setText("0");
tf3.setText("0");
}
else
{
if(s1=="+")
{
tf3.setText(String.valueOf(num1+num2));
}
if(s1=="-")
{
tf3.setText(String.valueOf(num1-num2));
}
if(s1=="*")
{
tf3.setText(String.valueOf(num1*num2));
}
if(s1=="/")
{
tf3.setText(String.valueOf(num1/num2));
}
}
}
public static void main(String... s)
{
new Calculation_ActionEvent("Calculation");
}
}
只需从两个文本框中获取值并执行所有计算加法、乘法、减法、除法和存储在不同的变量中以及在文本框中设置该变量,您不能直接在下面的 textbox.ex 中执行操作
String val1=textbox1.gettext();
String val2=textbox2.gettext();
int addition=Integer.ParseInt(val1)+Integer.ParseInt(val2);
textbox3.settext(addition.toString());
这会是你要找的东西吗? 我为你做了一个快速版本。
简单地说,我将最后一个运算符( +
、 -
、 *
、 /
)存储在一个String
变量( lastAction
)中, total
作为一个int
。 当按下“等于”时,我计算出总数并重置total
变量和lastAction
。 当按下运算符时,我更改总数但将最后一个值保留在变量中。
package cf.pgmann.calc;
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;
class Calculation_ActionEvent extends JFrame implements ActionListener {
JFrame f;
JLabel l;
JTextField tf1, tf3;
JButton b1, b2, b3, b4, b5, b6;
Calculation_ActionEvent(String s) {
f = new JFrame(s);
f.setLayout(null);
l = new JLabel("Enter two numbers : ");
tf1 = new JTextField();
// tf2 = new JTextField();
tf3 = new JTextField();
b1 = new JButton("+");
b2 = new JButton("-");
b3 = new JButton("*");
b4 = new JButton("/");
b5 = new JButton("equals");
b6 = new JButton("C");
f.add(l);
f.add(tf1);
f.add(tf3);
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
tf1.setBounds(160, 100, 250, 30);
// tf2.setBounds(320,100,50,30);
tf3.setBounds(250, 420, 50, 30);
b1.setBounds(250, 180, 50, 30);
b2.setBounds(350, 260, 50, 30);
b3.setBounds(150, 260, 50, 30);
b4.setBounds(250, 340, 50, 30);
b5.setBounds(230, 260, 90, 30);
b6.setBounds(420, 100, 50, 30);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
f.setSize(550, 550);
f.setVisible(true);
}
int total = 0;
String lastAction = "";
public void actionPerformed(ActionEvent e) {
int num = 0;
try {
num = Integer.parseInt(tf1.getText());
} catch(NumberFormatException ex) {}
String s1 = e.getActionCommand();
if (s1.equals("C")) {
tf1.setText("");
tf3.setText("0");
tf1.requestFocus();
total = 0;
} else if (s1.equals("equals")) {
tf3.setText(String.valueOf(calc(total, lastAction, num)));
tf1.setText("");
tf1.requestFocus();
total = 0;
} else {
total = total==0 ? num : calc(total, lastAction, num);
tf3.setText(String.valueOf(total));
tf1.setText("");
tf1.requestFocus();
lastAction = s1;
}
}
private int calc(int num1, String action, int num2) {
switch (action) {
case "+":
return num1 + num2;
case "-":
return num1 - num2;
case "*":
return num1 * num2;
case "/":
return num1 / num2;
default:
return num1;
}
}
public static void main(String... s) {
new Calculation_ActionEvent("Calculator");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.