我有多个文字字段和按钮
选择文本字段时,按下按钮时应将文本添加到文本字段中。
这是我尝试的方式
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" );
}
答案 0 :(得分:1)
您需要将选定的JTextComponent作为类成员。如果将选定的组件保存在局部变量中(我认为你正在做的事情),它就不记得所选的组件。一个粗略的例子:
public class YourClass implements ActionListener
{
private JTextComponent selectedTextField ;
....
void OnComponentSelected()
{
//init selectedTextField
}
void actionPerformed()
{
// selectedTextField.setText(...);
}
}
答案 1 :(得分:1)
您没有指定问题所以我会猜测。如果你想要一个更好的答案给出一个更好的问题。
当您单击按钮时,inputtext的焦点已经丢失(转移到该按钮)。
向更新共享变量的文本字段添加侦听器,指向所选的最后一个输出文本。处理actionevent时,请更新该组件。
当然,当共享变量不再有意义时,存在重置共享变量的问题。
更新:我认为getFocusedComponent()
是API的一部分,但我找不到任何引用,如果你想要一个好的答案,你应该发布更多的代码。
答案 2 :(得分:0)
您可以记住上一次选择的JTextComponent
并在按下某个按钮后更改其文字。所以你不要依赖专注的组件。你可以通过听老鼠事件来记住它。