Como Criar um Jtextfield Personalizado?

2 respostas
textojava
N

Então, queria criar (classe) um campo de texto parecido com este da imagem:

Um JTextfield em cima e um JSeparator em baixo do campo de texto

Pesquisando um pouco consegui encontrar um exemplo de Jtextfield, mas ainda falta a linha em baixo do campo de texto
import java.awt.Color;
import java.awt.Font;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.BorderFactory;
import javax.swing.JTextField;
import javax.swing.border.Border;

public class CampoDeTexto extends JTextField implements FocusListener{
    private static Color defaultBackground = new Color (223, 223, 223);
    private static Color focusedBackground = new Color (255, 255, 255);//223,223,223 vermelho claro anterior
    private static Border defaultBorder = BorderFactory.createLineBorder (Color.DARK_GRAY);
    private static Border focusedBorder = BorderFactory.createLineBorder(Color.DARK_GRAY, 1);
    private static Font defaultFont = new Font ("Verdana", Font.PLAIN, 12);
    private static Font defaultReadonlyFont = new Font ("Verdana", Font.BOLD, 12);
    private static Color defaultForeground = Color.BLACK;
    private static Color defaultReadonlyBackground = Color.WHITE;
    private static Border defaultReadonlyBorder = BorderFactory.createEmptyBorder();
    private static Border designTimeReadonlyBorder = BorderFactory.createEmptyBorder();
    
    
    
    public CampoDeTexto () {
        setFont(defaultFont);
        setForeground(defaultForeground);
        addFocusListener (this);
    }
    @Override
    public void focusGained(FocusEvent e) {
        defaultBackground = getBackground();
        defaultBorder = getBorder();
        setBackground (focusedBackground);
        setBorder(focusedBorder);
    }
    @Override
    public void focusLost(FocusEvent e) {
        setBackground (defaultBackground);
        setBorder(defaultBorder);
    }
}

Agradeço desde já

2 Respostas

J

Tira as bordas do JtextField e marque a opção “opaque”, ele vai ficar da cor do fundo do painel ou frame.
dpois so colocar o separator em baixo

N

Então quando coloco o separador em baixo ele não fica colado com o campo de texto, e eu queria q eles ficassem juntinhos
Por causa disto quero criar um campo de texto personalizado com este dois componentes

Criado 28 de outubro de 2017
Ultima resposta 28 de out. de 2017
Respostas 2
Participantes 2