【问题标题】:How do I display numbers in JTextField after tap on any number from calculator?点击计算器中的任何数字后,如何在 JTextField 中显示数字?
【发布时间】:2013-07-15 08:13:25
【问题描述】:

我知道我应该使用“actionlistener”,所以我想下面的代码应该可以工作,但它没有。

if (e.getSource() == "but0") { // but0 is name of button with number "0"
    String aaa = but0.getText();
    field.setText(aaa);
}

【问题讨论】:

  • 你检查过 but0.gettext() 返回的内容吗?
  • 如何查看?我是 Java 新手,我尝试创建简单的计算器。我认为 getText() 方法必须从 JButton 返回“0”但是0=new JButton("0");

标签: java swing actionlistener


【解决方案1】:

创建时在数组中添加按钮

ArrayList<JButton> buttonA = new ArrayList();
for(int i=0;i<=9;i++) {
 String num_ = String.valueOf(i);
 JButton button = new JButton(num_);
 button.setName(num_);
 buttonA.add(button);
  // do remaining stuff
}

在行动

 public void actionPerformed(ActionEvent e) {
   if(buttonA.contains(e.getSource())) {
            JButton btn = (JButton) e.getSource();
            display.setText(display.getText() + btn.getName());
   } else if() { // operations like +,- etc.,

   }

【讨论】:

    【解决方案2】:

    应使用 .equals() 读取按钮标题。 == 在这里不起作用。

    试试e.getSource().getText().equals("0")

    或者直接比较对象为e.getSource()==but0

    【讨论】:

    • 否,“==”有效,例如按钮“C”(清洁)的功能在下一个代码中正常工作 if (e.getSource()==clean){ field.setText(null) ;} 当我点击“C”按钮时,所有文本都从 JTextfield 中删除!!但我只能从键盘输入任何文本
    • @redavlr 您应该只使用equals() 比较字符串的相等性,而不是==,因为== 仅适用于编译时已知的字符串文字。
    • 干净是您按钮的标题吗?我确定它是对象名称。 Fo C 您正在比较对象而不是字符串。 e.getSource() 给出操作按钮。
    • 是的,但是 but0 也是按钮 0 的对象名称(...有人可以编写部分代码来创建 jtextfield、一个按钮和 alction 侦听器方法,这些方法有助于在之后的文本字段中显示此按钮的值点击?((需要帮助)
    • 我已经编辑了我的答案。如果 but0 是对象的名称,则不应将其与 =="but0"; 进行比较就做 ==but0。
    【解决方案3】:

    来自 JavaDocs,java.awt.event.EventObject

    public Object getSource()

    事件最初发生的对象。

    不要与字符串进行比较,而是尝试与按钮本身进行比较:

    if (e.getSource() == but0) {
        String aaa = but0.getText();
        field.setText(aaa);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-16
      • 2022-12-02
      • 2020-12-21
      • 2016-02-16
      • 2012-10-12
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多