New Post

[Java] [Swing] [Netbeans] [ Custom Palette ] jPasswordfield Round With Place Holder


 
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Paint;
import java.awt.RenderingHints;
import java.awt.font.TextLayout;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JPasswordField;
import javax.swing.border.EmptyBorder;

public class Ae_passField extends JPasswordField {

    private Boolean left = true;
    protected float Ae_sizeBorder = 1.0F;
    protected Color Ae_colorBorder = Color.decode("#ADADAD");
    private String Ae_placeholder = "Type password here";
    private Color Ae_txtColorPlaceholder = Color.decode("#808080");
    private final Integer Ae_borderRadius = 8;
    private final Color txtcolor = Color.decode("#000000");
    private final Color bgcolor = Color.decode("#FFFFFF");

    public Ae_passField() {
        setOpaque(false);
        setBorder(new EmptyBorder(0, 10, 0, 4));
        setPreferredSize(new Dimension(188, 30));
        setFont(new Font("Segoe UI", 0, 12));
        setForeground(txtcolor);
        setBackground(bgcolor);
    }

    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        Paint oldPaint = g2.getPaint();

        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        RoundRectangle2D.Float r2d = new RoundRectangle2D.Float(0.0F, 0.0F, getWidth(), getHeight(), this.Ae_borderRadius, this.Ae_borderRadius);

        g2.clip(r2d);

        g2.setColor(getBackground());
        g2.fillRoundRect(0, 0, getWidth(), getHeight(), this.Ae_borderRadius, this.Ae_borderRadius);
        if (getText().length() < 1) {
            Insets insets = getInsets();
            FontMetrics fm = getFontMetrics(getFont());
            g2.setColor(getForeground());
            if (getText() == null) {
                setText("  ");
            }
            TextLayout layout = new TextLayout(this.Ae_placeholder == null ? " " : this.Ae_placeholder, getFont(), g2.getFontRenderContext());

            Rectangle2D bounds = layout.getBounds();

            int x = (int) (getWidth() - insets.left - insets.right - bounds.getWidth()) / 2;
            if (getHorizontalAlignment() != 0) {
                x = 0 + insets.left;
            }
            int y = (getHeight() - insets.top - insets.bottom - fm.getMaxAscent() - fm.getMaxDescent()) / 2;

            y += fm.getAscent() - 1;
            g2.setColor(this.Ae_txtColorPlaceholder);
            layout.draw(g2, x, y);
        }
        g2.setPaint(oldPaint);
        super.paintComponent(g);
    }

    @Override
    protected void paintBorder(Graphics g) {
        int x = 1;
        int y = 1;
        int w = getWidth() - 2;
        int h = getHeight() - 2;
        Graphics2D g2 = (Graphics2D) g.create();
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        g2.setStroke(new BasicStroke(this.Ae_sizeBorder));
        g2.setColor(this.Ae_colorBorder);
        g2.drawRoundRect(x, y, w, h, this.Ae_borderRadius, this.Ae_borderRadius);
        g2.dispose();
    }

    public Color getAe_TxtColorPlaceholder() {
        return this.Ae_txtColorPlaceholder;
    }

    public void setAe_TxtColorPlaceholder(Color Ae_txtColorPlaceholder) {
        this.Ae_txtColorPlaceholder = Ae_txtColorPlaceholder;
    }

    public Boolean getLeft() {
        return this.left;
    }

    public void setLeft(Boolean left) {
        this.left = left;
        repaint();
    }

    public float getAe_SizeBorder() {
        return this.Ae_sizeBorder;
    }

    public void setAe_SizeBorder(float Ae_sizeBorder) {
        this.Ae_sizeBorder = Ae_sizeBorder;
    }

    public Color getAe_ColorBorder() {
        return this.Ae_colorBorder;
    }

    public void setAe_ColorBorder(Color Ae_colorBorder) {
        this.Ae_colorBorder = Ae_colorBorder;
    }

    public String getAe_Placeholder() {
        return this.Ae_placeholder;
    }

    public void setAe_Placeholder(String Ae_placeholder) {
        this.Ae_placeholder = Ae_placeholder;
    }
}

Lihat tutorial sebelumnya untuk jtextfield

No comments