Установите текст приглашения в JTextField - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь установить текст приглашения на JTextField, используя класс FocusLisner, но, к сожалению, я столкнулся с проблемой. Текст подсказки появляется только после нажатия кнопки JTextField.

Я хочу, чтобы приглашение отображалось по умолчанию при запуске программы.

Вот мой код:

import java.awt.FlowLayout;
import java.awt.HeadlessException;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

/**
 * 
 */
public class PromptText extends JFrame
{
    private JTextField jTextField;


    public static void main( String[] args )
    {
        new PromptText( );

    }

    public PromptText( ) throws HeadlessException
    {
        super( );
        jTextField = new JTextField( 15);
        addPromptToJTextField( );

        add( jTextField );
        add(new JButton( "Button"));

        setLayout( new FlowLayout( ) );
        setSize( 250, 250 );
        setVisible( true );

    }

    private void addPromptToJTextField( )
    {
        jTextField.addFocusListener( ( new FocusListener( )
        {
            String promptText = "You must write the path...";

            @Override
            public void focusLost( FocusEvent e )
            {
                // TODO Auto-generated method stub
                if( jTextField.getText( ).isEmpty( ) )
                {
                    jTextField.setText( promptText );
                }
            }

            @Override
            public void focusGained( FocusEvent e )
            {
                // TODO Auto-generated method stub
                if( jTextField.getText( ).equals( promptText ) )
                {
                    jTextField.setText( "" );
                }
            }
        } ) );
    }
}
...