[Resolvido]Arredondar borda de um textField Java

1 resposta
programaçãojava
F

Pessoal boa noite vi algumas coisas no forum mas não compreendi muito bem, gostaria de arrendondar borda do texField alguem poderia me ajudar grato

1 Resposta

V

Você precisará sobreescrever alguns métodos do JTextField para que o mesmo possua bordas arredondadas. Métodos que você precisará sobreescrever: paintComponent(), paintBorder(), e contains().

Exemplo:

public class RoundJTextField extends JTextField {
    private Shape shape;
    public RoundJTextField(int size) {
        super(size);
        setOpaque(false);
    }
    protected void paintComponent(Graphics g) {
         g.setColor(getBackground());
         g.fillRoundRect(0, 0, getWidth()-1, getHeight()-1, 15, 15);
         super.paintComponent(g);
    }
    protected void paintBorder(Graphics g) {
         g.setColor(getForeground());
         g.drawRoundRect(0, 0, getWidth()-1, getHeight()-1, 15, 15);
    }
    public boolean contains(int x, int y) {
         if (shape == null || !shape.getBounds().equals(getBounds())) {
             shape = new RoundRectangle2D.Float(0, 0, getWidth()-1, getHeight()-1, 15, 15);
         }
         return shape.contains(x, y);
    }
}

Para testar o efeito:

JFrame frame = new JFrame("TextFiel com borda arredondada");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setLayout(new FlowLayout());
JTextField field = new RoundJTextField(15);
frame.add(field);
frame.setVisible(true);

Dá uma olhada nesse link também: https://java-swing-tips.blogspot.com.br/2012/03/rounded-border-for-jtextfield.html

Criado 10 de fevereiro de 2017
Ultima resposta 10 de fev. de 2017
Respostas 1
Participantes 2