我对javaswing中的按钮有问题

yzuktlbb  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(373)

招呼!我有一个问题,它是java,我做了一个gui键盘(类似于计算器)和两个文本字段。现在我不知道如何使用键盘上的同一个键根据需要键入不同的文本字段(不要同时键入两个文本字段)?谢谢

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   String s  = jTCena.getText();
            jTCena.setText(s+"1");
}                                        

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     String s  = jTCena.getText();
            jTCena.setText(s+"2");
}                                        

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String s  = jTCena.getText();
            jTCena.setText(s+"3");
}                                        

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   String s  = jTCena.getText();
            jTCena.setText(s+"4");
}
bwleehnv

bwleehnv1#

我不知道如何使用键盘上的相同键按需要键入不同的文本字段
您可以定义自定义 TextAction 把它加到你的钮扣上。
这个 TextAction 允许您跟踪上一个具有焦点的文本组件(在单击按钮之前)。
比如:

class KeyboardAction extends TextAction
{
    private String letter;

    public KeyboardAction(String letter)
    {
        super(letter);
        this.letter = letter;
    }

    public void actionPerformed(ActionEvent e)
    {
        JTextComponent component = getFocusedComponent();
        component.setCaretPosition( component.getDocument().getLength() );
        component.replaceSelection( letter );
    }
}

然后使用如下类:

jButton1 = new JButton( new KeyboardAction("1") );
jButton2 = new JButton( new KeyboardAction("2") );

或者使用以下方法将操作添加到现有按钮:

button.setAction( new KeyboardAction("1") );

相关问题