Adicionar Componentes a JPanel

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??

Quem não muda de tamanho? O JDialog?

nao… o Jpanel q contem o JList…

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

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

obrigado…

[]s

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.

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???

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!

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??

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.