Boa Noite,
Estou tentando utilizar o JList, mas estou com dificuldade. Preciso criar uma telinha para realizar soma, criei uma textfield, recuperei o dado e estou jogando o valor para dentro do meu JList, acredito que ate ai esteja correto, meu problema agora é realizar o calculo e mostrar na tela.
JPanel panel_1 = new JPanel();
tabbedPane.addTab("Soma", null, panel_1, null);
JLabel lblNewLabel = new JLabel("Digite os valores para realizar a soma:");
tfSoma = new JTextField();
tfSoma.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0)
{
}
});
tfSoma.setColumns(10);
JLabel resultSoma = new JLabel("");
JButton btSoma = new JButton("Calcular");
btSoma.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
DefaultListModel modelo = new DefaultListModel();
JList lista = new JList();
lista.setModel(modelo);
String dSoma = tfSoma.getText();
int vSoma = Integer.parseInt(dSoma);
DefaultListModel lModel = (DefaultListModel)lista.getModel();
((DefaultListModel)(lista.getModel())).addElement(vSoma);
for (int i = 0; i < lModel.getSize(); i++)
{
/** AKI ESTA MNHA DUVIDA, ESTOU NO CAMINHO OU TO PERDIDO TOTAL? PRECISO APENAS SOMAR OS VALORES QUANDO O CARA DIGITAR E CLICAL NO BOTAO... FOI TUDO CRIADO PELA FERRAMENTA NO ECLIPSE.**/
}
}
});
Obrigado!
Está dificil de entender o que vc esta tentando fazer.
DefaultListModel modelo = new DefaultListModel();
JList lista = new JList();
lista.setModel(modelo);
/** Até aqui vc CRIOU um COMPONENT JList, COMPONENT são usados em FORMS,
Talvez vc quisesse usar "LinkedList" ou "ArrayList" **/
String dSoma = tfSoma.getText();
int vSoma = Integer.parseInt(dSoma);
// Obtem o valor do textfield e converte em inteiro, OK
DefaultListModel lModel = (DefaultListModel)lista.getModel();
/** Aqui vc fez algo estranho, pois o "lista.getModel()" é igual ao "modelo",
portanto linha desnecessária **/
((DefaultListModel)(lista.getModel())).addElement(vSoma);
// Aqui seria o mesmo que "modelo.addElement(vSoma)"
for (int i = 0; i < lModel.getSize(); i++)
{
}
/** Este for está estranho pois só tem UM elemento no "modelo" e sempre terá
somente UM elemento (se não der erro) **/
Vc realmente precisa guardar os valores digitados no textfield? Caso não, vc poderia criar uma variavel “int total = 0;” e na ação do botao “total = total + vSoma;”.
Caso contrario, precisa decidir se vai usar JList ou LinkedList/ArrayList, JList é usado como component visual, portanto vc poderia fazer “jPanel.add(jList)” para exibir os elementos da lista, diferente dos outros List.
Também o local onde o seu list está sendo instanciado (“new JList()”), é recomendado instanciar fora da função “actionPerformed” preferencialmente como atributo da classe, assim garante uma única instancia com a possibilidade de guardar quantos elementos quiser. Da forma como está, toda vez que termina o “actionPerformed”, a “lista” é “perdida” juntamente com o elemento guardado nele.
Entendi Diego, na verdade criando uma variavel já tenho pronto e esta funcionando, mas oque foi pedido no curso ée utilizar JList, para que na tela que criei seja digitado os valores e toda vez que o usuário clicar no botão seja feito o calculo… EX: usuario digitou 2, 4, 6… nisso vai aparecendo no TextField como resultado 2, 6, 12 e assim sucessivamente… problema que não sei usar esse JList como se fosse um ArrayList.
// Atributos
DefaultListModel modelo;
JList lista;
// Construtor da classe
modelo = new DefaultListModel();
lista = new JList();
lista.setModel(modelo);
// No actionPerformed
modelo.addElement(tfSoma.getText());
Object[] array = modelo.toArray();
int soma = 0;
for (int i = 0; i < array.length; i++) {
soma = soma + Integer.parseInt(array[i].toString());
}
imprime(soma);