首页 > 解决方案 > java swing中的按钮有问题

问题描述

问候!我有一个问题,它是 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");
} 

标签: javaswing

解决方案


我不知道如何使用键盘上的相同键根据需要输入不同的文本字段

您可以定义一个自定义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") );

推荐阅读