jTextfield Metro Style

Java jTextfield Metro Style

Image Icon

  • Provide 2 icons for radio buttons, 20x20 pixels
  • Create a package / folder icon in the src (sourch packages) folder, and save it in the packages icon

 
Download Icon HERE
 

Create Java Class

Example : jMetroTexfield.java

Import

import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Insets;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.border.Border;

public class jMetroTexfield extends JTextField implements ComponentListener {

    private final JButton button = new JButton();//X
    private Color borderColor = new Color(0,102,255);
    //icon X
    private ImageIcon iconBlack = new ImageIcon(getClass().getResource("/icon/metro_x_r.png"));
    private ImageIcon iconWhite = new ImageIcon(getClass().getResource("/icon/metro_x_w.png"));
    private boolean xBlackIcon = true;
    private final Dimension dimension = new Dimension(300, 35);//ukuran textfiled
    //tinggi button
    private int heightBtn = dimension.height - 10;

    @SuppressWarnings("LeakingThisInConstructor")
    public jMetroTexfield() {
        setSize(dimension);
        setPreferredSize(dimension);
        setOpaque(false);
        setBackground(new Color(0, 0, 0, 0));
        setForeground(Color.black);
        setFont(new Font("Segoe UI",Font.PLAIN,12));
        //properties button
        button.setText("");
        button.setBorderPainted(false);
        button.setContentAreaFilled(false);
        button.setMargin(new Insets(1, 1, 1, 1));
        button.setVisible(true);
        button.setFocusPainted(false);
        button.setCursor(new Cursor(Cursor.HAND_CURSOR));
        add(button);
        setVisible(true);
        addComponentListener(this);
        setSelectionColor(button.getBackground());
        updateButton();
        button.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                ((JTextField) button.getParent()).setText("");
                           }
            @Override
            public void mousePressed(MouseEvent e) {/*...*/
            }
            @Override
            public void mouseReleased(MouseEvent e) {/*...*/
            }
            @Override
            public void mouseEntered(MouseEvent e) {
                button.setOpaque(true);
                button.setIcon((xBlackIcon) ? iconBlack : iconWhite);
            }
            @Override
            public void mouseExited(MouseEvent e) {
                button.setOpaque(false);
                button.setIcon(null);
            }
        });

    }
    public boolean isxDarkIcon() {
        return xBlackIcon;
    }
    public void setxDarkIcon(boolean xDarkIcon) {
        this.xBlackIcon = xDarkIcon;
    }
    public Color getBotonColor() {
        return button.getBackground();
    }
    public void setBotonColor(Color botonColor) {
        button.setBackground(botonColor);
        setSelectionColor(button.getBackground());
    }
    public Color getBorderColor() {
        return borderColor;
    }
    public void setBorderColor(Color borderColor) {
        this.borderColor = borderColor;
        updateBorder();
    }
    //update properties TextField
    private void updateBorder() {
        Border border = BorderFactory.createLineBorder(borderColor, 1);
        setBorder(BorderFactory.createCompoundBorder(border,
                BorderFactory.createEmptyBorder(5, 5, 5, button.getSize().width + 2)));

    }
    //Sesuaikan dimensi dan posisi button X.
    private void updateButton() {
        //ukuran button
        heightBtn = this.getSize().height - 10;
        button.setSize(new Dimension(heightBtn, heightBtn));
        button.setPreferredSize(new Dimension(heightBtn, heightBtn));
        //posisi
        button.setLocation(getWidth() - button.getWidth() - 5, 5);
        updateBorder();
    }
    @Override
    public void componentResized(ComponentEvent e) {
        updateButton();
    }
    @Override
    public void componentMoved(ComponentEvent e) {/*...*/}
    @Override
    public void componentShown(ComponentEvent e) {/*...*/}
    @Override
    public void componentHidden(ComponentEvent e) {/*...*/}
}

Clean and Build

Right click java project, select clean and build

How to Use

Java jTextfield Metro Style

  • Create Jframe 
  • Drag and drop jMetroTexfield.java into jframe

 Properties Option

Java jTextfield Metro Style


Posting Komentar

0 Komentar