我做了一个简单的计算器
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener
{
GridLayout layout = new GridLayout(5, 1);
JLabel l1 = new JLabel("Number 1:");
JLabel l2 = new JLabel("Number 2:");
JLabel l3 = new JLabel("Answer:");
JTextField t1 = new JTextField(30);
JTextField t2 = new JTextField(30);
JTextField t3 = new JTextField(30);
JButton add = new JButton("+");
JButton sub = new JButton("-");
JButton mul = new JButton("*");
JButton div= new JButton("/");
Float ans;
public Calculator()
{
super("Calculator");
setSize(250, 200);
add(l1);
add(t1);
add(l2);
add(t2);
add(l3);
add(t3);
add(add);
add(sub);
add(mul);
add(div);
setLayout(layout);
add.addActionListener(this);
sub.addActionListener(this);
mul.addActionListener(this);
div.addActionListener(this);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String n1 = t1.getText();
String n2 = t2.getText();
Float num1 = Float.parseFloat(n1);
Float num2 = Float.parseFloat(n2);
Object clicked = e.getSource();
if(add == clicked)
{
t3.setText(String.valueOf(num1+num2));
}
else if(sub == clicked)
{
t3.setText(String.valueOf(num1-num2));
}
else if(mul == clicked)
{
t3.setText(String.valueOf(num1*num2));
}
else
{
if(num2 == 0)
t3.setText("Can't Divide By Zero");
else
t3.setText(String.valueOf(num1/num2));
}
}
}
还有一堂课要读它
public class UseMyFrame
{
public static void main(String[] args)
{
Calculator calc = new Calculator();
calc.setVisible(true);
}
}
我的问题是我想添加另一个功能并按下9个按钮1-9按下时会将各自的数字放在文本字段上,但我不知道如何将它们设置为出现在文本字段中,我首先想要做set.text,但我意识到按钮怎么会知道在哪里放置它的号码,因为如果我做set.text我需要把它放在textfield1或textfield 2.我想让数字首先出现在textfield1然后在textfield2上如果有已经是textfield1上的数字
答案 0 :(得分:2)
但我不知道如何将它们设置为出现在文本字段
您添加到JButton的Action应该扩展TextAction。 TextAction可以访问最后一个聚焦文本组件(因此您不必自己跟踪这些信息)。您的代码将类似于:
public class AddDigitAction extends TextAction
{
public void actionPerformed(ActionEvent e)
{
JButton button = (JButton)e.getSource();
String digit = button.getActionCommand();
JTextComponent target = getTextComponent(e);
target.replaceSelection(digit);
}
您可以对所有按钮使用相同的操作。 replaceSelection()方法是一种向文本字段添加文本的简便方法。它将在文本字段中的插入符的最后位置插入文本。
答案 1 :(得分:1)
所以你需要创建一个布尔变量来帮助你跟踪将数字放入哪个字段。然后在按钮的操作中你可以用它来决定。
if(first){
textField1.setText("1");
first = false;
}else{
textField2.setText("1");
first = true;
}
现在,这个片段非常简单,并没有考虑所有可能性。它只是在两个字段之间切换。您可以将其扩展到您需要的位置。
答案 2 :(得分:1)
如果您只想拥有一位数:
if(t1.getText().length() == 0)
t1.setText(...);
else
t2.setText(...);
更好:找出哪个文本字段包含当前focus
(请参阅javadocs)并将数字放在该文本的末尾:
tFocused.setText(tFocused.getText() + digit)
答案 3 :(得分:1)
首先设置global int curs = 0和全局字符串屏幕 然后在每个数字按钮放置该代码(所有关于字符串的连接)
if(curs==0){
screen="1"; // change the number for each button
jTextField1.setText(screen);
a=Double.parseDouble(screen);
curs++;
}else{
screen=screen+"1"; // // change the number for each button
jTextField1.setText(screen);
a=Double.parseDouble(screen);
curs++;
}