Texto com JTextField e escolha de fonte do JFontChooser

7 respostas
textojava
L

Bom dia,

Estou, junto com alguns colegas, desenvolvendo um editor gráfico em Java.
Um dos recursos, é adicionar texto (clicando em um botão chamado “Texto”).
Após isso, o usuário escolherá o tipo da fonte que quer na caixa JFontChooser. Daí ele deve clicar em algum lugar da tela e deve aparecer um JTextField e, de fato, isso ocorre.
O problema é que além do JTextField, ele imprime o Panel, incluindo a própria caixa JFontChooser.
Estou tentando descobrir porque isso ocorre e estou pesquisando, mas não estou encontrando…

Resultado: https://i.imgur.com/jpvf9x7.png

Ao clicar no botão, ele chama esse método:

protected class EscreverTexto implements ActionListener
{
	public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(null, fc, "Escolha a fonte da letra!", JOptionPane.PLAIN_MESSAGE);
        fonteLetra = fc.getPreviewFont();
	}
}

E, quando o usuário clicar na tela, ele basicamente chama esse trecho de código abaixo:

JTextField txtTexto = new JTextField();
                    add(txtTexto);
                    txtTexto.setFont(fonteLetra);
                    txtTexto.setLocation(e.getX(), e.getY());
                    txtTexto.setSize(50, 50);
                    txtTexto.setText("Insira seu texto aqui!");
                    txtTexto.isEditable();
                    txtTexto.isVisible();

Alguém poderia me ajudar? É urgente!!!

Agradeço desde já!

7 Respostas

rodriguesabner

manda o fonte todo

L

Não posso mandar o código todo.
Gostaria de alguma parte específica?

L
Esse trecho de código considero relevante (está diretamente ligada na classe que herda de JFrame).

JFontChooser fc = new JFontChooser();

protected MeuJPanel pnlDesenho = new MeuJPanel ();

btnTexto.addActionListener(new EscreverTexto());
rodriguesabner

Isso aí é só um action listener. Posta os métodos referentes a adição então. Não precisa ter medo de alguém roubar seu código, no Github tem vários exemplos disso.

L

Acredito que as linhas de código que pode ser ajudar na solução desse problema e que não foram postadas no tópicos sejam essas:

protected JButton btnTexto = new JButton("Texto");
protected MeuJPanel pnlDesenho = new MeuJPanel ();
protected Font fonteLetra;
protected JTextField txtTexto = new JTextField();
btnTexto.addActionListener(new EscreverTexto());
pnlBotoes.add (btnTexto);
cntForm.add (pnlDesenho, BorderLayout.CENTER);
rodriguesabner

vc da algum update depois de setar a fonte?

L

Não, eu apenas atribuo a fonte à uma variável fonteLetra e depois aplico o segundo bloco de comandos exibido no meu tópico!

Criado 17 de abril de 2020
Ultima resposta 17 de abr. de 2020
Respostas 7
Participantes 2