Mal desemepnho apos adicionar uma Font

7 respostas
Ziru

Boa noite pessoal, logo apos eu adicionar uma fonte em uma borda do painel que está numa pequena janela, ela está demorando para exibir seus dados, o JLabel e um painel com uma pequna imagem de fundo, ela aparece assim primeiro e só depois que aparece as outras coisas.

[img]http://img823.imageshack.us/img823/1111/3382ebe7c9674d8489cc6e3.png[/img]

O meu codigo é esse.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;

public class Documentacao extends AbstractAction {

	public void criarJanela() throws IOException {
		JFrame janDoc = new JFrame();
		janDoc.setTitle("Calculadora-IO");
		janDoc.setSize(320, 180);
		janDoc.setLocation(500, 200);
		janDoc.setVisible(true);
		janDoc.setResizable(false);

		JPanel painelPrincipal = new JPanel();
		painelPrincipal.setLayout(new BorderLayout());
		janDoc.add(painelPrincipal);
		
		Font font = new Font("Negrito", 1, 11); // A demora acontece logo apos eu criar essa fonte e adicionala na borda do painel
		
		JPanel painel = new JPanel();
		painel.setLayout(new GridLayout(2, 1));
		
		painel.setBorder(BorderFactory.createTitledBorder(null, "Documentação", 1, 2, font, Color.RED ));// aki
		painelPrincipal.add(BorderLayout.NORTH, painel);

		BufferedImage imagem = ImageIO.read(new File("C:\\Users\\ronildo\\Desktop\\Imagens C-IO\\chamas1.jpg"));
		JPanel painelImage = new NovoPainel(imagem);
		JPanel secundImage = new JPanel();
		secundImage.setLayout(new GridLayout(1, 3));
		secundImage.add(painelImage);
		painelPrincipal.add(BorderLayout.CENTER, secundImage);

Alguem por favor pode me ajudar?

7 Respostas

ViniGodoy

Mova a linha do setVisible para o final do método criarJanela.

Evite exibir janelas que não foram completamente construídas. Isso realmente sobrecarrega o ambiente gráfico.

Ziru

ViniGodoy:
Mova a linha do setVisible para o final do método criarJanela.

Evite exibir janelas que não foram completamente construídas. Isso realmente sobrecarrega o ambiente gráfico.

Certo, agora quando a janela aparece já vem com tudo.
Porem quando clico no JMenuItem que cria essa janela está demorando para ela ser exibida. É assim mesmo?
E isso ocorre só na primeira vez que clico no JMenuItem, as proximas a janela já aparece de forma bem rapida.

Ziru

Talvez possa me judar aki tambem, para deixar minha interface mais amigavel eu precisaria colocar umas iamgens no JCheckBox, mas não tenho a menor ideia de por onde começar, procurei na internete e não encontrei tambem, gostar ade deixar tipo algo assim:

É possível ter um resultado assim? Como fazer? ou o que estudar para conseguir fazer?
Grato pela atenção.

Ziru

Ziru:
Talvez possa me judar aki tambem, para deixar minha interface mais amigavel eu precisaria colocar umas iamgens no JCheckBox, mas não tenho a menor ideia de por onde começar, procurei na internete e não encontrei tambem, gostar ade deixar tipo algo assim:

É possível ter um resultado assim? Como fazer? ou o que estudar para conseguir fazer?
Grato pela atenção.

Minto eu. Tenho por onde começar, só que o resultado não fica o mesmo. Olha!

BufferedImage imagLac = ImageIO.read(new File("C:\\Users\\ronildo\\Desktop\\Imagens C-IO\\lanceiro.jpg"));
		ImageIcon imgLac = new ImageIcon(imagLac);
		JCheckBox lan = new JCheckBox(imgLac);
		lan.setText("Lanceiro");
		painelLeves.add(lan);

A parte onde mostra que está selecionado desaparece.

Olha

Ziru

ViniGodoy:
Mova a linha do setVisible para o final do método criarJanela.

Evite exibir janelas que não foram completamente construídas. Isso realmente sobrecarrega o ambiente gráfico.

O problema ta sendo a fonte mesmo, acabei de remove-la e tudo ficou normal.
:frowning:

Ziru

Não tem nenhum outro modo de colocar o titulo da borda do painel em negrito? Esse que tô usando deixa aplicação lenta, muito desagradável.

Ziru

Pessoal eu não sou louco, estou apenas com sono…rsr E Bastante contende com o resultado.
Uma parte está resolvido, usando o mesmo metodo que o viniGodoy me ensinou mais sendo com o html consegui colocar o titulo da borda em negrito sem comprometer a velocidade da aplicação segue o condigo.

String tituloBord = new String("<html><b>Documentação</b>");
		painel.setBorder(BorderFactory.createTitledBorder(null, tituloBord, 1, 2, null, Color.RED ));v

Agora só falta a questão do JCheckBox, agradeço quem puder me ajudar.

Criado 8 de outubro de 2012
Ultima resposta 8 de out. de 2012
Respostas 7
Participantes 2