Java Swing Placeholder для PasswordField - PullRequest
0 голосов
/ 05 мая 2018

Как вы можете прочитать из заголовка, у меня есть некоторые проблемы с организацией / решением небольшой проблемы. Написал класс для поля пароля. Я в основном хочу вставить заполнитель в поле пароля, который устанавливает подсказку (если хотите) или текст по умолчанию на ноль, когда пользователь нажимает на поле пароля, чтобы показать, что поле действительно для пароля.

Хотите встроить фрейм входа в систему для небольшого проекта. Любой ответ приветствуется.

Проблема содержит не знаю, как обрезать текст по умолчанию (текст пароля) до нуля, когда пользователь нажимает на него

 import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JPasswordField;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class externPlaceholderPasswordField extends JPasswordField
{
    private String pw;
    public externPlaceholderPasswordField(String pw)
    {
        this.pw = pw;

    }


    public char[] getPassword()
    {

        char[] password = super.getPassword();

        if(password.trim().length() == 0 && pw != null)
        {

            password = pw;
        }
        return password;
    }
    @Override
    public void paintComponent(Graphics g)
    {
        setHorizontalAlignment(externPlaceholderTextField.CENTER);
        super.paintComponent(g);

    if (super.getPassword().length() > 0 || pw == null)
    {
        return;
    }
    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setColor(Color.lightGray);
    g2.drawString(pw, getInsets().left, g.getFontMetrics().getMaxAscent() + getInsets().top);
}
}
...