Boa Noite, gostaria de saber se alguém pode me explicar se há alguma função para utilizar ou adicionar os elementos no JList. Caso não, gostaria de saber se alguém pode me dizer o motivo do não funcionamento do meu código.
OBS: Eu sei que ele está segurando os elementos, mas quando eu faço a Action do botão para somá-los, ele simplesmente joga o último número listado(último número da JList, passada por um TextoField) como resultado.
Código:
package Painel;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.text.JTextComponent;
import javax.swing.DefaultListModel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JList;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class pnCalculadora extends JFrame {
private JPanel contentPane;
private JTextField textField;
protected JTextComponent textField_1;
private JTextField textField_2;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
pnCalculadora frame = new pnCalculadora();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public pnCalculadora() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(22, 11, 382, 251);
contentPane.add(panel);
panel.setLayout(null);
JList list = new JList();
list.setBounds(10, 78, 140, 162);
panel.add(list);
DefaultListModel modelo = new DefaultListModel();
list.setModel(modelo);
textField = new JTextField();
textField.setBounds(10, 12, 86, 20);
panel.add(textField);
textField.setColumns(10);
textField_2 = new JTextField();
textField_2.setBounds(189, 130, 86, 20);
panel.add(textField_2);
textField_2.setColumns(10);
JButton btnAdicionarValor = new JButton("Adicionar Valor");
btnAdicionarValor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int getTextField = Integer.parseInt(textField.getText());
((DefaultListModel)(list.getModel())).addElement(getTextField);
textField.setText("");
textField.requestFocus();
}
}
);
btnAdicionarValor.setBounds(124, 11, 168, 23);
panel.add(btnAdicionarValor);
JComboBox comboBox = new JComboBox();
comboBox.setModel(new DefaultComboBoxModel(new String[] {"Soma", "Media"}));
comboBox.setBounds(20, 43, 77, 20);
panel.add(comboBox);
JButton btnCalcular = new JButton("Calcular");
btnCalcular.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(comboBox.getSelectedIndex() == 0)
{
int [] elementos = list.getSelectedIndices();
for(int cont = elementos.length; cont >=0 ; cont--)
{ int answer, total = 0;
answer = Integer.parseInt(((list.getModel())).getElementAt(cont).toString());
total = answer + total;
textField_2.setText(String.valueOf(total));
}
}
}
});
btnCalcular.setBounds(164, 46, 89, 23);
panel.add(btnCalcular);
}
}
Sem querer ficar dando desculpa, mas estou na minha segunda aula de Swing e o meu professor passou o exercício faltando 10 minutos para acabar a aula e não tive a oportunidade de perguntá-lo(8 dias atrás).
Grato desde já!