使用CTRL+选择更多文本字段;Java语言中的一种语言

使用CTRL+选择更多文本字段;Java语言中的一种语言,java,selection,textfield,Java,Selection,Textfield,我在Java中有更多的文本字段。当我按下CTRL+A时,我希望所有的文本字段都被选中。 我尝试了这种方法,但只有具有焦点的文本字段被选中 你能帮帮我吗 class Main{ public JTextField[] textFields; private TextFieldSelected(int byteCount) { textFields = new JTextField[byteCount]; for (int i = 0; i < textFields.le

我在Java中有更多的文本字段。当我按下CTRL+A时,我希望所有的文本字段都被选中。 我尝试了这种方法,但只有具有焦点的文本字段被选中

你能帮帮我吗

class Main{

public JTextField[] textFields;

private TextFieldSelected(int byteCount) {

    textFields = new JTextField[byteCount];
    for (int i = 0; i < textFields.length; i++) {
        textFields[i] = new JTextField(3);

    }

private class CtrlAAdapter extends KeyAdapter {

    public void keyPressed(KeyEvent e) {
        //JTextField textField = (JTextField) e.getComponent();

        if(KeyEvent.VK_CONTROL == e.getKeyCode() && e.getModifiers() == 0)
            if(KeyEvent.VK_A == e.getKeyCode() && e.getModifiers() ==0)

                new SelectAllListener();}}


            //  for(int i=0; i < textFields.length; i++) textFields[i].selectAll();

         class SelectAllListener implements ActionListener {  

             public void actionPerformed(ActionEvent ev) {  
                 for(int i=0; i < textFields.length; i++){
                     //JTextField field = textFields[i];
                    // String text=textFields[i].getText();
                    // textArea.append(text);
                     textFields[i].selectAll();  
                 }



         }
//      reset();
        //  e.consume();
         }
主类{
公共JTextField[]textFields;
已选择私有文本字段(整数字节计数){
textFields=newjtextfield[byteCount];
for(int i=0;i
}

我改了,但还是不行:

for (int i = 0; i < textFields.length; i++) {
         JTextField textField = textFields[i];
        textField.getDocument().addDocumentListener(documentListener);
        KeyBindings keybindings = new KeyBindings(textField);


    } 
for(int i=0;i
类键绑定{

    public KeyBindings(JTextField textField){
        Action action = new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {

                for(int i=0;i < textFields.length; i++){
                    JTextField textField = textFields[i];


                    for(int j=0;j < textFields.length; j++){

                            textFields[j].selectAll();
                            textFields[j].transferFocus();
                            }
                }
            }
        };

        String keyStrokeAndKey = "control A";
        KeyStroke keyStroke = KeyStroke.getKeyStroke(keyStrokeAndKey);
        textField.getInputMap().put(keyStroke, keyStrokeAndKey);
        textField.getActionMap().put(keyStrokeAndKey, action);

    }
}
公钥绑定(JTextField textField){
Action Action=newAbstractAction(){
@凌驾
已执行的公共无效操作(操作事件e){
for(int i=0;i

如何使未聚焦字段也显示所选内容?
KeyListener
有一个很好的限制。它注册的组件必须具有焦点,并且在接收关键事件之前可以聚焦

为了接收此消息,您应该使用API

基本上,在包含文本字段的容器中注册一个
击键
,确保在聚焦窗口
中使用
时。浏览组件列表,查找
JTextField
并在字段上调用
selectAll


您可能遇到的另一个问题是,未聚焦字段可能不会显示选择项。KeyListener有一个很好的限制。它注册的组件必须具有焦点,并且在接收键事件之前可以聚焦

为了接收此消息,您应该使用API

基本上,在包含文本字段的容器中注册一个
击键
,确保在聚焦窗口
中使用
时。浏览组件列表,查找
JTextField
并在字段上调用
selectAll


您可能遇到的另一个问题是,未聚焦字段可能无法显示选择内容

我以前问过的同一个问题,这里是答案单击此链接我以前问过的同一个问题,这里是答案单击[此链接][1][1]:我不知道你的例子做了什么…我以前问过的同一个问题,这里是答案单击此链接我以前问过的同一个问题,这里是答案单击[此链接][1][1]:我不知道你的例子做了什么…我试过另一种方法:for(int I=0;I