JList posicionamento

16 respostas
F

Boas

Eu gostava de saber como posso posicionar a JList.

public Tabela()
	{
		
		
		this.setLayout(new FlowLayout());
		this.setSize(600,350);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		b2 = new  JList(ola);
		b2.setVisibleRowCount(5);
		b2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		scroll = new JScrollPane(b2);
	
		
		this.add(scroll);
	


		
		
}

Com este código eu crio a JList e ela aparece no meio da JFrame.
Mas eu quero poder posicionar exactamente como eu quero.

Já experimentei este código mas não funcionou:

public Tabela()
	{
		
		
		this.setLayout(null);
		this.setSize(600,350);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		b2 = new  JList(ola);
		b2.setVisibleRowCount(5);
		b2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		scroll = new JScrollPane(b2);
                scroll.setBounds(x, y, w, h);
	
		
		this.add(scroll);
	


		
		
}

Alguém me ajuda, agradeço.

16 Respostas

lucasportela

Acho que você está querendo posicionar a tabela , não?

você está inserindo a lista dentro do scroll, entao faça:

scroll.setLocation(int x, int y);
FernandoFranzini

Use o posicionamento absoluto(não portável) como o amigo lucas indicou…ou use outro layout(posicionamento relativo portável) para posicionar no lugar que vc quiser.

lucasportela

Outra dúvida de posicionamento muito pertinente é para posicionar o JFrame no centro:

no seu caso seria

this.setLocationRelativeTo(null);
F

Eu coloquei o código do Lucas e não funcionou.

public Tabela()
	{
		
		
		this.setLayout(new FlowLayout()); 
		this.setSize(600,350);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		b2 = new  JList(ola);
		b2.setVisibleRowCount(4);
		
		b2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		scroll = new JScrollPane(b2);
		
                 //Lucas post
                scroll.setLocation(34,121);
	
		
		this.add(scroll);
	

}

Fernando, que layout devo usar para o posicionamento relativo portátil??

lucasportela

Outra dúvida de posicionamento muito pertinente é para posicionar o JFrame no centro:

no seu caso seria

this.setLocationRelativeTo(null);
FernandoFranzini

qualquer um de preferencia !!
Só não pode usar setBound ou setLocation…

F

Pois eu já percebi, mas se usar um Layout de preferência eu não consigo posicionar onde eu quero ou seja na exacta posição que eu desejo.
tipo se usar o FlowLayout ele aparece no meio, se usar o BorderLayout ele aparece na borda…

Mas quando uso o posicionamento absoluto, só consido posicionar a JList sem o scroll. Porque se adicionar o scroll ele não posiciona :confused:

FernandoFranzini

Fabio010:
Pois eu já percebi, mas se usar um Layout de preferência eu não consigo posicionar onde eu quero ou seja na exacta posição que eu desejo.
tipo se usar o FlowLayout ele aparece no meio, se usar o BorderLayout ele aparece na borda…

Mas quando uso o posicionamento absoluto, só consido posicionar a JList sem o scroll. Porque se adicionar o scroll ele não posiciona :/


É pq vc precisa estudar mais os tipos de layout existente no swing e seus funcionamentos…

F

Ok então tenho de ver melhor isso.
Obrigado pela ajuda.

lucasportela

É o seu layout

tem de setar o alinhamento do layout na hora de instanciá-lo

this.setLayout(new FlowLayout(FlowLayout.LEFT));
F

lucasportela:
É o seu layout

this.setLayout(new FlowLayout(FlowLayout.LEFT));

Com esse layout consigo posicionar o scroll no lado esquerdo.
Mas o problema é que eu quero posicionar o scroll onde quero. Tal como o Fernando disse (posicionamento absoluto).
Já testei com scroll.setBounds e scroll.setLocation e ambos não funcionaram.

FernandoFranzini

Fabio010:
lucasportela:
É o seu layout

this.setLayout(new FlowLayout(FlowLayout.LEFT));

Com esse layout consigo posicionar o scroll no lado esquerdo.
Mas o problema é que eu quero posicionar o scroll onde quero. Tal como o Fernando disse (posicionamento absoluto).
Já testei com scroll.setBounds e scroll.setLocation e ambos não funcionaram.


Da sim…se 1 layout não for suficiente para sua disposição, vc pode combinar outros layouts dentro de layouts…
Mas tem que dar aquela estudada!
Bom final de semana :-o

lucasportela

Se isso não lhe servir, eu desisto… hehehe

FlowLayout layout = new FlowLayout();
layout.setHgap(250);
layout.setVgap(250);
this.setLayout(layout);
F

lucasportela:
Se isso não lhe servir, eu desisto… hehehe

FlowLayout layout = new FlowLayout(); layout.setHgap(250); layout.setVgap(250); this.setLayout(layout);

Só consegui mover para baixo com o setVgap o outro não funciona :slight_smile:

lucasportela

Complementando o que o amigo FernandoFranzini disse… Bons estudos.

F

Já consegui resolver o problema.
Já consigo posicionar o scroll na posição que desejo :)

aqui está o código:

public Tabela()
	{
		

		this.setLayout(null);  //layout tem de ser nulo para podermos usar o setLocation
		this.setSize(600,350);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		list = new  JList(ola);
		list.setVisibleRowCount(4);
		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		scroll = new JScrollPane(list);
		scroll.setLocation(223,22); 
		scroll.setSize(200,100); // penso que o probelma estava aqui 
		scroll.setVisible(true);
		this.add(scroll);
	


		
		
}

não sei porquê mas acho que estava a fazer confusão com qualquer coisa.
Ou foi mesmo o setSize, porque se não definir-mos o Size ele não irá aparecer na JFrame.
Obrigado por me ajudarem.

Criado 9 de setembro de 2011
Ultima resposta 9 de set. de 2011
Respostas 16
Participantes 3