Java 计算JTable中选定单元格的值之和
我带着我的问题又回来了。我只是一个学习Java代码的初学者 我有一个Java 计算JTable中选定单元格的值之和,java,swing,jtable,Java,Swing,Jtable,我带着我的问题又回来了。我只是一个学习Java代码的初学者 我有一个JTable,可以显示数据库中的数据。我想对表格的几个单元格(通过选择行)执行计算 我希望能够根据在表格中选择或取消选择的行来添加或减少目标单元格值 为了实现这一点,我创建了一个变量,允许我存储这些值的总和选定单元格的名称。然后,我用MouseEvent来听一行上的点击。最后,我通过getValuesAt()方法获得所选行(目标单元格)的值 目前,这段代码允许我通过点击一行来总结。但他只计算选定的行数;相反,它是现有值与新选
JTable
,可以显示数据库中的数据。我想对表格的几个单元格(通过选择行)执行计算
我希望能够根据在表格中选择或取消选择的行来添加或减少目标单元格值
为了实现这一点,我创建了一个变量,允许我存储这些值的总和选定单元格的名称。然后,我用MouseEvent
来听一行上的点击。最后,我通过getValuesAt()
方法获得所选行(目标单元格)的值
目前,这段代码允许我通过点击一行来总结。但他只计算选定的行数;相反,它是现有值与新选择的总和。我不知道如何编写只允许我选择行的代码
这是我的密码:
要显示数据,请执行以下操作:
public void remplirTableau(){
MetierImpl metier=new MetierImpl();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String codeCli=cmbCodeCli.getSelectedItem().toString();
List<Echeancier> opss=metier.consulterEcheancierNonRembourser(codeCli);
model = new DefaultTableModel(){
@Override
public boolean isCellEditable(int iRowIndex, int iColumnIndex)
{
return false;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex==1 || columnIndex==2 || columnIndex==3) {
return Object.class; // le type des données de la première colonne
}else{
return Double.class;
}
}
};
model.setColumnIdentifiers(new Object[]{"Ref","Date prévu","Date réalisé","Dégré","Capital","Amortis","Interet","Epargne","Echeance"});
Object[] row = new Object[9];
for(Echeancier cl:opss){
row[0] = cl.getIdEch();
row[1] = sdf.format(cl.getDateEch());
if(cl.getDateR()!=null){
row[2] = sdf.format(cl.getDateR());
}else{
row[2] = cl.getDateR();
}
row[3] = cl.getNumEch();
row[4] = cl.getCapital();
row[5] = cl.getAmorti();
row[6] = cl.getInteret();
row[7] = cl.getEpargne();
row[8] = cl.getEcheance();
model.addRow(row);
}
table.setModel(model);
}
总之,关于我的问题,我尝试对JTable中所选框的值求和。如果单击第一个框,则只显示其值。如果单击第二个框,则其值将添加到第一个框的值中,依此类推。另一方面,如果我取消选择一个框,它的值在现有总数中会减少。
我想要一个can-like for Excel。为了更快地获得更好的帮助,请发布一个or。而不是添加鼠标侦听器添加
表。getSelectionModel().addListSelectionListener()
。在监听器中,您可以获取table.getSelectedRows()
并执行求和。
private double valeur=0;
private void maybeShowPopup(MouseEvent e) {
int row=table.getSelectedRow();
MetierImpl metier=new MetierImpl();
//double valeur=0;
try {
if (e.getClickCount()==1) {
for (int i = 0; i < table.getRowCount(); i++) {
valeur+=(double)(table.getModel().getValueAt(row, 5));
}
}
System.out.println(valeur);
} catch (Exception e2) {
JOptionPane.showMessageDialog(null, "Veuillez selectionné la ligne concernée.");
}
}
table = new JTable();
/**
* Cette action permet de faire une action sur un Jtable
*/
table.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
maybeShowPopup(e);
}
@Override
public void mouseReleased(MouseEvent e) {
maybeShowPopup(e);
}
});
scrollPane.setViewportView(table);