1

我做了一个简单的计算器

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,按下时会将它们各自的数字放在文本字段上,但我不知道如何将它们设置为出现在文本字段中,我首先要设置。 text 但我意识到按钮如何知道将其编号放在哪里,因为如果我确实 set.text 我需要将它放在 textfield1 或 textfield 2 上。我想让数字首先出现在 textfield1 中,然后在 textfield2 上(如果已经有) textfield1 上的数字

4

4 回答 4

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() 方法是一种将文本添加到文本字段的简单方法。它将在文本字段中插入符号的最后一个位置插入文本。

于 2013-03-13T15:19:42.237 回答
1

首先设置 global int curs = 0 和 global string screen 然后在每个数字按钮上放置该代码(所有关于字符串的连接)

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++;
    }
于 2014-12-25T03:53:32.760 回答
1

因此,您需要创建一个布尔变量来帮助您跟踪将数字放入哪个字段。然后在按钮的操作中您可以使用它来决定。

   if(first){
      textField1.setText("1");
      first = false;
   }else{
      textField2.setText("1");
      first = true;
   }

现在,这个片段非常简单,并没有考虑所有的可能性。它只是在两个字段之间切换。您可以将其扩展到您需要的内容。

于 2013-03-13T13:51:18.177 回答
1

如果你只想有个位数:

if(t1.getText().length() == 0)
    t1.setText(...);
else
    t2.setText(...);

更好:找出哪个文本字段具有当前focus值(请参阅 javadocs)并将数字放在该文本的末尾:

tFocused.setText(tFocused.getText() + digit)
于 2013-03-13T13:51:22.723 回答