JTextField焦点问题

uni*_*nit 0 java swing

想知道是否可以通过打印来初始化文本字段(这部分我知道该怎么做),但是然后突出显示打印,然后在用户开始输入时消失?即使没有突出显示,如何使用"请输入您的电话号码"之类的字段初始化字段,然后消失,以便用户不必删除文本?

Bal*_*a R 5

  • JTextFiled使用一些已知文本初始化实例,例如"请输入您的电话号码"
  • 实现FocusListener
  • 在focusGained()中检查JTextField实例以查看它是否具有已知文本以及是否确实清除了文本; 如果没有,什么都不做.

这是一个代码示例

    final String INITIAL_TEXT = "Please enter your ph. number";
    final JTextField textField = new JTextField(INITIAL_TEXT);
    textField.addFocusListener(new FocusListener() {

        @Override
        public void focusGained(FocusEvent e) {
            if (textField.getText().equals(INITIAL_TEXT)) {
                textField.setText("");
            }

        }

        @Override
        public void focusLost(FocusEvent e) {

        }
    });
Run Code Online (Sandbox Code Playgroud)


Cos*_*lis 5

还有另一种方法,即focusGained事件.只需标记初始文本:

   String initialText = "Enter your story here...";
   ...
   jTextArea1.setText(initialText); 
   ...

   private void focusGained(java.awt.event.FocusEvent evt) {
        if (jTextArea1.getText().equals(initialText)) {
            //jTextArea1.setSelectionStart(0);
            //jTextArea1.setSelectionEnd(jTextArea1.getText().length());
            jTextArea1.selectAll();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这样,只要用户在jTextArea1中键入内容,就会立即替换初始文本.

  • 感谢名单!selectAll()更好. (2认同)