当前位置: 首页 > 知识库问答 >
问题:

用JButton将文本添加到两个文本字段

胡劲
2023-03-14

如果我的问题不是很具体,下面是我想做的。我有一个计算器,它有两个JTextField,一个JLabel(“Answer=”),一个JTextField作为答案。

我有一个JButton数组(0到9),允许用户点击它们,将数字添加到JTextField中,光标在其中处于活动状态。。。这就是问题所在。我只能让两个文本字段中的一个向它们添加数字,或者两者都向彼此添加相同的数字。

例如,如果我点击一个按钮,addActionListener被设置为(new AddDigitsONE),它将只允许我向第一个JText字段添加数字。即使我尝试将光标设置为第二个JTextField并使用JButtons向其添加数字,它也会跳回第一个JTextField。

用于将JButton数组添加到JFrame中的JPanel的代码

// input is my JPanel set to BorderLayout.SOUTH

for (int i = 0; i < button.length; i++)
{
    text = Integer.toString(i);
    button[i] = new JButton();
    button[i].setText(text);
    input.add(button[i]);
    button[i].addActionListener(new AddDigitsONE());
}

我的动作监听器代码:第一个JTextField

// firstNumber is my first JTextField
// command is the button pressed (0-9)
// command "<" is erasing one character at a time

private class AddDigitsONE implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        String text = firstNumber.getText();
        String command = ((JButton)(e.getSource())).getText();

        if (command == "<")
        {
            firstNumber.setText(text.substring(0,text.length()-1));
        }

        else
            firstNumber.setText(text.concat(command));
    }
}

我的动作侦听器的代码:第二个JTextField

private class AddDigitsTWO implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        String text = secondNumber.getText();
        String command = ((JButton)(e.getSource())).getText();

        if (command == "<")
        {
            secondNumber.setText(text.substring(0,text.length()-1));
        }

        else
            secondNumber.setText(text.concat(command));
    }
}

是否有一种方法可以合并两个操作侦听器并区分哪个文本字段中的光标处于活动状态(同时允许我使用JButtons在两个JTextFields中输入数字)?

共有1个答案

郑锋
2023-03-14

您可以向按钮添加操作,而不是使用ActionListener。在这种情况下,您需要扩展TextAction,因为它有一个方法,允许您获取最后一个聚焦文本组件,以便您可以将数字插入该组件。代码应该是这样的:

class AddDigit extends TextAction
{
    private String digit;

    public AddDigit(String digit)
    {
        super( digit );
        this.digit = digit;
    }

    public void actionPerformed(ActionEvent e)
    {
        JTextComponent component = getFocusedComponent();
        component.replaceSelection( digit );
    }
}
 类似资料:
  • 问题内容: 如果我的问题不是很具体,这就是我想要做的。我有一个具有两个JTextField,一个JLabel(“ Answer =”)和一个JTextField作为答案的计算器。 我有一个JButtons数组(0到9),允许用户单击它们以将数字添加到JTextField中,其中的光标处于活动状态…这是这里的问题。我只能让两个文本字段之一向它们添加数字,或者都向彼此添加相同的数字。 例如,如果我单击

  • 问题内容: 在我的在线计算机科学课上,我必须编写一个程序来确定太阳系中每个行星的表面重力。除了一个方面,我几乎已经掌握了它的所有方面。我需要使用单独的方法将表面重力写入文件。这是我目前的方法: 我的问题是,当我将其写入文件时,它将覆盖先前的值。我如何获得它包括所有的价值。如果有帮助,这是我的全部代码: 问题答案: 这样做是为了创建带有追加模式的作品:

  • 问题内容: 在Django中,我具有以下代码,该代码在HTML页面上创建用户名和密码表单: 我想在该字段中添加“用户名”和“密码”占位符文本,然后在用户单击该字段时消失。实现此目标的最佳方法是什么? 问题答案: 您必须使用占位符属性 要么

  • 问题内容: 我想更新SQL表中的1列。示例:列中的当前值是这样的 现在,我想像这样更新整个专栏:www.mypizza.com/2013/09/pizzalover.jpg有什么办法可以做到这一点?提前致谢 问题答案: 您可以使用语句简单地更新列

  • 问题内容: 首先,我对Java非常基础。我正在尝试浏览.txt文件并将其内容加载到文本区域。我已经完成了该部分,直到从JFileChooser接收文件为止,现在我不知道如何做其余的工作。 问题答案: 使用所有Swing文本组件都支持的read(…)和write(…)方法。简单的例子:

  • 我想计算两个字段的总和,然后在文档中创建新的字段,比如:“total sum”。但我不知道怎么做。都在MongoDB中。这里有一个例子: