0

我有多个文本字段和按钮

文本字段 纽扣

选择文本字段时,应在按下按钮时向其中添加文本。

这就是我尝试的方式

import javax.swing.text.JTextComponent;
    private void num9ActionPerformed(java.awt.event.ActionEvent evt) {                                            
            JTextComponent component = getFocuedComponent();
            component.setText( component.getText() + "9" );

    }

但这对我不起作用。

PS。尝试制作矩阵计算器。

编辑:供参考......这是我如何实现它......在SJuan76的回答之后......谢谢!

private JTextComponent selectedTextField;

// TextFields onFocus event
    private void a33FocusGained(java.awt.event.FocusEvent evt) {
        selectedTextField = (JTextComponent) evt.getSource();
    }
// action for button
        private void num9ActionPerformed(java.awt.event.ActionEvent evt) {                                            
                selectedTextField.setText( selectedTextField.getText() + "9" );

        }
4

3 回答 3

1

您需要将选定的 JTextComponent 作为类成员。如果您将所选组件保存在局部变量中(我认为您正在这样做),它不会记住所选组件。一个粗略的例子:

public class YourClass  implements ActionListener
{
   private JTextComponent selectedTextField ; 
    ....
   void OnComponentSelected()
   {
     //init selectedTextField
   }
   void actionPerformed() 
   {
      //   selectedTextField.setText(...);
   }
}
于 2012-10-10T10:34:53.873 回答
1

你没有具体说明问题,所以我会猜测一下。如果您想要更好的答案,请提出更好的问题。

当您单击按钮时,输入文本的焦点已经丢失(转移到该按钮)。

将侦听器添加到更新共享变量的文本字段,指向最后选择的输出文本。当您处理 actionevent 时,更新该组件。

当然,当共享变量不再有意义时,会出现重置共享变量的问题。

更新:我认为getFocusedComponent()是 API 的一部分,但我找不到任何参考,如果你想要一个好的答案,你应该发布更多代码。

于 2012-10-10T10:37:07.640 回答
0

您可以记住上次选择JTextComponent的内容并在按下某个按钮后更改其文本。所以你不依赖于专注的组件。您可以通过监听鼠标事件来记住它。

于 2012-10-10T10:57:15.127 回答