Swing Java

3 respostas
java
M

Olá,

Não sei o motivo por qual não está calculando pois para mim parece estar tudo certo. Não da erro na execução. Mas ainda sim, ele não devolve valor nenhum no textField_2.

Alguém poderia me dizer o que está errado?
Grato desde já!

Código:

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(Integer.toString(total));
				}
			}
		}
	});
	btnCalcular.setBounds(164, 46, 89, 23);
	panel.add(btnCalcular);

}

}

3 Respostas

juliofsn

Nessa linha:
int [] elementos = list.getSelectedIndices();
Verifique se está retornando elementos.
E nessa outra:
for(int cont = elementos.length; cont >0 ; cont--)
Veja que se a linha de cima retornar apenas um elemento, ele não entra no for, já que o primeiro elemento de um array sempre vai ser 0, e nessa lógica ele ignora os elementos de índice 0, troque o “cont > 0” por “cont >= 0”.

M

int [] elementos = list.getSelectedIndices();
É verdade, ele não ta salvando os elementos que eu passo no textField. Pode me dar uma dica de como eu faço para salvar múltiplos dados de um textField em uma JList?

juliofsn

Pelo que eu vi, você já consegue passar do textFields pro JList, ou não? Os valores não são mostrados no JList?
O problema é que nessa linha você pega os índices (não os valores) das linhas selecionadas, se não há linhas selecionadas, ele não retorna nada.

Criado 3 de março de 2016
Ultima resposta 3 de mar. de 2016
Respostas 3
Participantes 2