Boa noite,
Meu problema é o seguinte, fiz uma pesquisa sobre como fazer o checkBox no JTable e consegui fazer, aí blz.
Quando clicar no botão “Calcular” tem que gerar a soma dos valores das próteses selecionadas, porém quando seleciono as duas (só adicionei duas para testes) aparece o valor da primeira linha. Selecionei só a segunda linha e fica 0.0
Não está gerando nenhum erro no console do eclipse (estranho rs)
À partir da linha 174 começa o actionPerformed
[code]package br.com.telas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import br.com.bean.Pedido;
import br.com.bean.TabeladePreco;
import br.com.dao.TabeladePrecoDao;
import br.com.exception.DaoException;
import br.com.telas.CadPedido;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class TabelaCarrinho extends JDialog {
final JPanel lista = new JPanel();
private JTable table;
private static final long serialVersionUID = 1L;
private TabeladePrecoDao tabDao = new TabeladePrecoDao();
private JTextField textValorProt;
private JTextField textValorServ;
private Double valorServ, valorProt, pedidoTotal;
private JTextField textField;
private boolean check = false;
public TabelaCarrinho() throws DaoException {
/*setBounds(100, 100, 450, 300);
getContentPane().setLayout(new BorderLayout());
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(null);*/
setIconImage(Toolkit.getDefaultToolkit().getImage(CadPedido.class.getResource("/br/com/images/logo_transp.png")));
setTitle("Seleção de Próteses");
//setIconImage(Toolkit.getDefaultToolkit().getImage(CadFuncionario.class.getResource("/br/com/images/cadForm.jpg")));
int width = 800;
int height =600;
// setModal(true);
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screen.width-width)/2;
int y = (screen.height-height)/3;
setBounds(x,y,821,600);
getContentPane().setLayout(null);
final JPanel buttonPanel = new JPanel();
buttonPanel.setBackground(UIManager.getColor("Button.background"));
buttonPanel.setBounds(0, 0, 152, 562);
getContentPane().add(buttonPanel);
buttonPanel.setLayout(null);
lista.setBounds(152, 0, 656, 562);
getContentPane().add(lista);
lista.setLayout(null);
JLabel lblFuncionriosCadastrados = new JLabel("Selecione as Próteses");
lblFuncionriosCadastrados.setFont(new Font("Kalinga", Font.BOLD, 16));
lblFuncionriosCadastrados.setHorizontalAlignment(SwingConstants.CENTER);
lblFuncionriosCadastrados.setBackground(Color.WHITE);
lblFuncionriosCadastrados.setBounds(10, 11, 612, 29);
lista.add(lblFuncionriosCadastrados);
lista.setVisible(true);
table = new JTable();
table.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
);
Object[] columnNames = {"Número", "Nome", "Tipo", "Preço", "Selecione"};
Object[][] data = {
};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
table = new JTable(model) {
private static final long serialVersionUID = 1L;
/*@Override
public Class getColumnClass(int column) {
return getValueAt(0, column).getClass();
}*/
@Override
public Class getColumnClass(int column) {
switch (column) {
case 0:
return String.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return String.class;
default:
return Boolean.class;
}
}
};
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBounds(0, 50, 636, 423);
lista.add(scrollPane);
table.getColumnModel().getColumn(0).setPreferredWidth(55);
table.getColumnModel().getColumn(0).setMinWidth(55);
table.getColumnModel().getColumn(1).setPreferredWidth(200);
table.getColumnModel().getColumn(1).setMinWidth(200);
table.getColumnModel().getColumn(2).setPreferredWidth(80);
table.getColumnModel().getColumn(2).setMinWidth(80);
table.getColumnModel().getColumn(3).setPreferredWidth(100);
table.getColumnModel().getColumn(3).setMinWidth(100);
table.getColumnModel().getColumn(4).setPreferredWidth(100);
table.getColumnModel().getColumn(4).setMinWidth(100);
table.setBounds(39, 175, 530, 232);
atualizaLista(table,"");
scrollPane.setViewportView(table);
JButton btnCalcular = new JButton("Calcular");
btnCalcular.addActionListener(new ActionListener() {
/**
* Soma os preços das próteses que foram selecionadas
*/
public void actionPerformed(ActionEvent e) {
//int linha;
int i=0;
Boolean checados;
Double prec = 0.0;
Double precoProtese = 0.0 ;
do{
checados = new Boolean(table.getValueAt(i, 4).toString());
if(checados==true){
// linha = table.getSelectedRow();
String preco = (String) table.getValueAt(i,3);
prec = Double.parseDouble(preco);
precoProtese = precoProtese + prec;
i++;
}else{
check = false;
}
//i++;
}while(check==true);
textValorProt.setText(String.valueOf(precoProtese));
}
} );
btnCalcular.setBounds(10, 484, 89, 23);
lista.add(btnCalcular);
textValorProt = new JTextField();
textValorProt.setBounds(120, 531, 86, 20);
lista.add(textValorProt);
textValorProt.setColumns(10);
JLabel lblSoma = new JLabel("Valor Pr\u00F3tese(s):");
lblSoma.setBounds(10, 534, 106, 14);
lista.add(lblSoma);
textValorServ = new JTextField();
textValorServ.setBounds(295, 531, 86, 20);
lista.add(textValorServ);
textValorServ.setColumns(10);
JLabel lblService = new JLabel("Servi\u00E7o:");
lblService.setBounds(233, 534, 72, 14);
lista.add(lblService);
JButton btnSo = new JButton("Somar");
btnSo.addActionListener(new ActionListener() {
/**
* Soma o valor total do pedido com o serviço do protético
*/
public void actionPerformed(ActionEvent arg0) {
Pedido obj = new Pedido();
valorServ = Double.parseDouble(textValorServ.getText());
valorProt = Double.parseDouble(textValorProt.getText());
pedidoTotal = valorServ + valorProt;
textField.setText(String.valueOf(pedidoTotal));
obj.setTotalPedido(Double.parseDouble(textField.getText()));
}
});
btnSo.setBounds(415, 530, 89, 23);
lista.add(btnSo);
textField = new JTextField();
textField.setBounds(520, 531, 86, 20);
lista.add(textField);
textField.setColumns(10);
}
public void atualizaLista(JTable lista, String nome) throws DaoException{
DefaultTableModel dtm = (DefaultTableModel) table.getModel();
dtm.setRowCount(0);
List<TabeladePreco> listaTab = new ArrayList<TabeladePreco>();
listaTab = tabDao.consultarProteses(nome);
String dados[] = new String[4];
for (TabeladePreco obj : listaTab) {
dados[0] = String.valueOf(obj.getNumProtese()) ;
dados[1] = obj.getNomeProtese();
dados[2] = obj.getTipoProtese();
dados[3] = String.valueOf(obj.getPrecoProtese());
((DefaultTableModel) table.getModel()).addRow(dados);
}
table.repaint();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
TabelaCarrinho frame;
try {
frame = new TabelaCarrinho();
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
frame.setVisible(true);
} catch (DaoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}
[/code]

