Я пытаюсь установить текст приглашения на 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( "" );
}
}
} ) );
}
}