gpt4 book ai didi

java - 如何在 AWT/SWING 中的同一文本字段中输入两个数字

转载 作者:太空宇宙 更新时间:2023-11-04 13:02:59 25 4
gpt4 key购买 nike

我创建了一个简单的计算器,其中我在两个不同的文本字段中输入两个操作数,并且运行良好。但我需要从同一个文本字段获取两个输入。我应该做出哪些改变?

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");
}
}

最佳答案

这会是您正在寻找的东西吗?我为你做了一个快速版本。

简单地说,我将最后一个运算符(+-*/)存储在 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");
}
}

关于java - 如何在 AWT/SWING 中的同一文本字段中输入两个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34768656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com