Java 在swing中默认选择文本

Java 在swing中默认选择文本,java,swing,focus,jtextfield,jtextarea,Java,Swing,Focus,Jtextfield,Jtextarea,当FocusGaund事件发生时,有没有办法在默认情况下自动选择JTextField和JTextArea中的文本?您刚才说了如何做-FocusListener的FocusGaund事件 然后,您可以通过FocusEvent的getSource方法获得其焦点的JComponent,然后对其调用selectAll方法 比如: FocusAdapter selectAllFocusAdapter = new FocusAdapter() { public void focusGained(Focu

当FocusGaund事件发生时,有没有办法在默认情况下自动选择JTextField和JTextArea中的文本?

您刚才说了如何做-FocusListener的FocusGaund事件

然后,您可以通过FocusEvent的getSource方法获得其焦点的JComponent,然后对其调用selectAll方法

比如:

FocusAdapter selectAllFocusAdapter = new FocusAdapter() {
  public void focusGained(FocusEvent e) {
    final JTextComponent tComponent = (JTextComponent) e.getSource();
    SwingUtilities.invokeLater(new Runnable() {

      @Override
      public void run() {
        tComponent.selectAll();
      }
    });
    tComponent.selectAll();
  }
};

myJTextField.addFocusListener(selectAllFocusAdapter);
otherJTextField.addFocusListener(selectAllFocusAdapter);
myTextArea.addFocusListener(selectAllFocusAdapter);

你刚才说了怎么做——FocusListener的FocusGain事件

然后,您可以通过FocusEvent的getSource方法获得其焦点的JComponent,然后对其调用selectAll方法

比如:

FocusAdapter selectAllFocusAdapter = new FocusAdapter() {
  public void focusGained(FocusEvent e) {
    final JTextComponent tComponent = (JTextComponent) e.getSource();
    SwingUtilities.invokeLater(new Runnable() {

      @Override
      public void run() {
        tComponent.selectAll();
      }
    });
    tComponent.selectAll();
  }
};

myJTextField.addFocusListener(selectAllFocusAdapter);
otherJTextField.addFocusListener(selectAllFocusAdapter);
myTextArea.addFocusListener(selectAllFocusAdapter);
这就是您需要的:

jTextField1.selectAll();
详情如下:

jTextField1.addFocusListener(new FocusListener() {

        @Override
        public void focusGained(FocusEvent e) {
            if(jTextField1.getText().equals(initialText))
                //jTextField1.setText("");
                jTextField1.selectAll();
        }

        @Override
        public void focusLost(FocusEvent e) {
            if(jTextField1.getText().equals(""))
                jTextField1.setText("whatever");
        }
    });
这就是您需要的:

jTextField1.selectAll();
详情如下:

jTextField1.addFocusListener(new FocusListener() {

        @Override
        public void focusGained(FocusEvent e) {
            if(jTextField1.getText().equals(initialText))
                //jTextField1.setText("");
                jTextField1.selectAll();
        }

        @Override
        public void focusLost(FocusEvent e) {
            if(jTextField1.getText().equals(""))
                jTextField1.setText("whatever");
        }
    });

你在期待类似的事情吗

    class MyFocusTextField extends JTextField {
    {
        addFocusListener(new FocusListener() {

            @Override
            public void focusGained(FocusEvent e) {
                FocusTextField.this.select(0, getText().length());
            }

            @Override
            public void focusLost(FocusEvent e) {
                FocusTextField.this.select(0, 0);
            }
        });
    }
}

你在期待类似的事情吗

    class MyFocusTextField extends JTextField {
    {
        addFocusListener(new FocusListener() {

            @Override
            public void focusGained(FocusEvent e) {
                FocusTextField.this.select(0, getText().length());
            }

            @Override
            public void focusLost(FocusEvent e) {
                FocusTextField.this.select(0, 0);
            }
        });
    }
}

+1相当好:-但共同问题是关于+1相当好:-但共同问题是关于+1相当好:-但共同问题是关于@mKorbel我同意你的看法。谢谢。+1很好:-但共同的问题是关于@mKorbel我同意你的看法。谢谢。@mKorbel:谢谢!答案已编辑,链接答案为1+。@Ricard请注意,这是对您的问题的回答,因为JTextArea无法选择所有正确的方法,我将带插入符号移动到结尾text@mKorbel:谢谢!答案已编辑,链接答案为1+。@Ricard若要回答您的问题,请注意,因为JTextArea无法选择所有正确的方法,我将带插入符号移动到文本的末尾。您应该从这里查看@mKorbel Answer。您应该从这里查看@mKorbel answer。