默认情况下,在swing中选择文本

rig*_*gon 1 java swing focus jtextfield jtextarea

有什么办法可以自动默认选择的文本JTextField,并JTextAreafocusGained事件发生?

Hov*_*els 6

你刚刚说了怎么做 - FocusListener的focusGained事件.

然后,您可以通过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);
Run Code Online (Sandbox Code Playgroud)


Jat*_*tin 6

这就是你需要的:

jTextField1.selectAll();
Run Code Online (Sandbox Code Playgroud)

更多信息:

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");
        }
    });
Run Code Online (Sandbox Code Playgroud)

  • +1非常好:-)但常见的问题是关于[Focus是异步的,在某些情况下需要invokeLater](http://stackoverflow.com/a/10293343/714968) (2认同)

vel*_*s4j 5

你期待类似的东西吗?

    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);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

  • +1非常好:-)但常见的问题是关于[Focus是异步的,在某些情况下需要invokeLater](http://stackoverflow.com/a/10293343/714968) (2认同)