Adicionar Componentes a JPanel

9 respostas
rafabenevente

bom gente… to com o seguinte problema eu tenhu um JDialog e quero adicionar alguns componentes nele… Por exemplo dois JList e alguns otros componentes…

estou usando o seguinte codigo…

private void dialogFormatar() {
		JPanel painel = new JPanel();
		JList listaFonte = new JList();
		JScrollPane jscpFonte = new JScrollPane(listaFonte);
		jscpFonte.setLocation(10,10);
		jscpFonte.setsize(20,40);
		painel.add(jscpFonte);
		
		
		JDialog dialog = new JDialog();
		dialog.setTitle("Formatar...");
		dialog.setSize(400,400);
		dialog.setLocation(300,300);
		dialog.setModal(false);
		//dialog.pack();
		dialog.add(painel);
		dialog.setVisible(true);
	}

posso alterar o metodo setSize mas ele não muda de tamanho… o que posso fazer??

9 Respostas

ViniGodoy

Quem não muda de tamanho? O JDialog?

rafabenevente

nao… o Jpanel q contem o JList…

ViniGodoy

Faça:
dialog.setLayout(new BorderLayout());

E troque seu add por:
dialog.add(painel, BorderLayout.CENTER);

E dá uma lida aqui:
http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

rafabenevente

consegui… usei o metodo setPreferredSize() e consegui colocar o tamanho

obrigado…

[]s

ViniGodoy

O método que indiquei funciona mesmo que o JDialog seja redimensionado. Aliás, é a grande vantagem de usar LayoutManagers, no lugar de setar tamanhos fixos.

Lembre-se também que setar tamanhos no braço evita que você possa usar a aplicação em outras plataformas.

rafabenevente

sim mas com o metodo q vc passou o componente nao ficava de uma forma boa… ele tinha um tamanho fixo… o que atrapalhava o restante dos componentes??

como assim tamanho fixo impede de ser usado em outras plataformas???

lina

Oi,

Poderá ocorrer erros de formatação na troca de S.O.

Por exemplo, você está desenvolvendo no Windows e utiliza um Layout null. Ao rodar a sua aplicação em Linux, as margens e localização dos componentes iram ser diferentes… Até mesmo no próprio Windows, com resoluções diferentes de tela.

Null Layout não garante portabilidade da sua GUI, ou seja, não é uma boa idéia utiliza-lo.

Tchauzin!

rafabenevente

a tah entendi… u duro é que ainda não aprendi direito a mexer com layouts… acho q ele ficam “feios”… mas nesse caso teria como eu setar o tamanho do componente usando algum layout???

alguem me indica algum livro ou alguma coisa sobre layouts??

ViniGodoy

Você pode usar o GridBagLayout, que chega bem próximo do que você geralmente espera.

E tem também o MigLayout:
http://www.miglayout.com/

Tem bastante material sobre os layout managers no link que eu passei ali em cima.

Agora, a alteração vale a pena. Embora dê um pouco mais de trabalho posicionar os componentes, pense que sua janela vai se tornar redimensionável automaticamente. Se você pensar na lógica necessária para redimensionar uma janela, vai ver que, no final, você teve é muito menos trabalho.

Criado 27 de agosto de 2009
Ultima resposta 28 de ago. de 2009
Respostas 9
Participantes 3