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

时间:2012-11-25 17:30:49

标签: java swing focus jtextfield jtextarea

JTextField事件发生时,默认情况下会自动选择JTextAreafocusGained中的文字吗?

3 个答案:

答案 0 :(得分:6)

你刚刚说了怎么做 - FocusGistener的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);

答案 1 :(得分:6)

这就是你需要的:

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");
        }
    });

答案 2 :(得分: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);
            }
        });
    }
}