[DUVIDA] JList (Adicionar varios Elemento)

[code]String teste;

DefaultListModel lista = new DefaultListModel();
teste = (String) JLIST1.getSelectedValue();
lista.addElement(teste);

JLIST2.setModel(lista);
[/code]

Bom galera fiz este codigo em um botão q toda vez quando clicado ele joga os valores selecionados do JList1 no JList2, O PROBLEMA é que ele joga somente um valor selecionado (o primeiro selecionado) e tambem qd clicado mais de uma vez ele substitui o valor ja presente no JLIST2 ao invez de adicionar outro ELEMENTo na lista…

Como eu posso corrigir este codigo para suprir as minhas necessidades ?

Obrigado…

Até .o/

Ao invés de usar o getSelectedValue, use o getSelectedValues (note o ‘s’ no final)
Veja em http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JList.html#getSelectedValues()

Eu tentei dessa forma que vc disse…

O problema q (String) não suporta =/
da um erro…

Alguem mais ?? :lol:

Valeu msm assim pela ajuda

Até

Preste atenção ao retorno da função. getSelectedValues retorna Object[] e não Object.

[quote=cleriton]Eu tentei dessa forma que vc disse…

O problema q (String) não suporta =/
da um erro…

Alguem mais ?? :lol:

Valeu msm assim pela ajuda

Até[/quote]

Cara um exemplo bem tosco, mas ve se te serve … abraço

import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;


public class TesteJL extends JFrame {
	
	
	private void init() {
		
		final JList list = new JList();
		final DefaultListModel dl = new DefaultListModel();
		list.setModel(dl);
		dl.addElement("UM");
		dl.addElement("DOIS");
		dl.addElement("TRES");
		dl.addElement("QUATRO");
	      
	    final JList list2 = new JList();
		final DefaultListModel dl2 = new DefaultListModel();
		list2.setModel(dl2);
	    
	    JButton bt = new JButton("Vai");		
		JComboBox cb = new JComboBox();
		cb.getSelectedItem();
		bt.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
            	Object[] values = list.getSelectedValues();  
        	    for(Object valor : values) {
        	    	dl2.addElement(valor);
        	    }
            }
        });
		
		JPanel jp1 = new JPanel();
		jp1.add(bt);
		JPanel jp2 = new JPanel(new GridLayout(1,0,1,0));
		jp2.add(list);
		jp2.add(list2);
	    this.getContentPane().add(jp1, BorderLayout.SOUTH);
		this.getContentPane().add(jp2, BorderLayout.CENTER);		
		this.setSize(400,400);
		this.setVisible(true);			

	}
	
	
	public static void main(String[] args) {
		TesteJL tjl = new TesteJL();
		tjl.init();
	}

}

getSelectedValues
public Object[] getSelectedValues()
Returns an array of the values for the selected cells. The returned values are sorted in increasing index order.
Percebeu?

Eu tinha visto isso…

Mais me explique por favor como pegar os valores do getSelectedValues e jogar no outro JList.

Grato por todos ai tentarem me ajudar .o/

Usando o seu próprio código ficaria assim:

[code]
Object hold[];
String teste;

DefaultListModel lista = new DefaultListModel();
hold = JLIST1.getSelectedValues();
teste = (String) hold[posicao];
lista.addElement(teste);

JLIST2.setModel(lista); [/code]

Pode colocar dentro de um for também. Teste o código aí, estou sem compilador para rodar…

Manim…

tentei aq dessa forma nao consegui fazer funcionar =/

Seguinte oq estou tentando fazer eh clicar em um botao e pegar os Valores selecionados do JList 1 e adicionar no JList2…

O problema eh q esta so adicionando UM elemento e qd clico mais de uma vez no botao ele sobropoe o elemento q estava la…

VAleu .o/

[quote=cleriton][code]String teste;

DefaultListModel lista = new DefaultListModel();
teste = (String) JLIST1.getSelectedValue();
lista.addElement(teste);

JLIST2.setModel(lista);
[/code]

Bom galera fiz este codigo em um botão q toda vez quando clicado ele joga os valores selecionados do JList1 no JList2, O PROBLEMA é que ele joga somente um valor selecionado (o primeiro selecionado) e tambem qd clicado mais de uma vez ele substitui o valor ja presente no JLIST2 ao invez de adicionar outro ELEMENTo na lista…

Como eu posso corrigir este codigo para suprir as minhas necessidades ?

Obrigado…

Até .o/[/quote]

1º getSelectedValues retorna um array de Object (Object[])
2º Voce tera que percorrer o array e adicionar os valores dele no outro list
3º a cada chamda do metodo voce cria um novo DefaultListModel a solução será pegar o ListModel já existente e adicionar os valores a este

Com o seu código seria isso:

String[] teste;//Mudando a declaração de uma String simples apra um array

DefaultListModel lista = (DefaultListModel) JLIST2.getModel();//Pegando os ListModel já existente
teste = (String[]) JLIST1.getSelectedValues();//Pegando todos os valores e convertendo para String[]

for(String s : teste)//Percorrendo a lista
   lista.addElement(s);//adicionando ao model

JLIST2.setModel(lista);

Eu não testei mas eu acho que é assim.

Aew vlw por tentar ajudar…

Mais seguinte executei e talz e deu erro, dai debuguei e vi q o erro esta na 3 linha…
parece q nao esta convertendo no cast =///

Obrigado…

Até

OBs: se alguem conseguir me ajudar diz ai :wink: