button1.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
String str1 = datepick1.getText();
String str2 = datepick2.getText();
checkTime(str1,str2);
if (tablePanel.getComponentCount()!= 0)
tablePanel.removeAll();
setJTable(str1, str2, tablePanel);
tablePanel.updateUI();
}
});
//显示JTable
public void setJTable(String str1,String str2, JPanel panel){
Date startDate = new Date(str1);
Date endDate = new Date(str2);
final String str3 = str1.replace("/", "").replace(" ", "").substring(0,10);
final String str4 = str2.replace("/", "").replace(" ", "").substring(0,10);
final String depName = (String) depComboBox.getSelectedItem();
final double total = analyst.getTotalDD(depName, str3, str4);
System.out.println(total);
if(total > 0)
{
final long n = (endDate.getTime()-startDate.getTime())/3600000-1;
final Object[][] data = new Object[(int) n][3];
Object[] columnNames = { "DATE_TIME" , "VALUE", "percentage"};
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
int i;
for (i=0; i < (int)n; i++)
{
cal.setTime(startDate);
cal.add(Calendar.HOUR_OF_DAY, i+1);
String date_time = sdf.format(cal.getTime());
Object[] temp = new Object[]{date_time, 0, 0.00};
data[i] = temp;
}
DefaultTableModel model = new DefaultTableModel(data, columnNames);
table = new JTable(model);
model.addTableModelListener(new TableModelListener()
{
public void tableChanged(TableModelEvent e) {
if(e.getType()==TableModelEvent.UPDATE)
{
if(table.getSelectedColumn()==2){
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
Double percent = Double.parseDouble(tableModel.getValueAt(table.getSelectedRow(),2).toString());
tableModel.insertRow(table.getSelectedRow(),new Object[]{tableModel.getValueAt(table.getSelectedRow(),0),percent*total,percent});
tableModel.removeRow(table.getSelectedRow()+1);
}
//System.out.println("Update Row "+table.getSelectedRow()+"Col :"+table.getSelectedColumn());
} }
});
JScrollPane scrollPane = new JScrollPane();
scrollPane.getViewport().add(table);
panel.add(scrollPane);
//button2的监听事件 button2.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
String [][] dataValue = new String[tableModel.getRowCount()][2];
double sum = 0;
for(int i =0;i<tableModel.getRowCount();i++){
dataValue[i][0] = (String)tableModel.getValueAt(i,0);
dataValue[i][1] = tableModel.getValueAt(i,2)+"";
sum += Double.parseDouble(tableModel.getValueAt(i,2).toString());
}
if (sum!=1)
{
JOptionPane.showMessageDialog(label2, "sum(percentage)="+sum+" 不等于 1!","", JOptionPane.INFORMATION_MESSAGE);
}
else
{
analyst.dataAnalyst(dataValue, depName, str3, str4);
JOptionPane.showMessageDialog(label3, "修改成功","", JOptionPane.INFORMATION_MESSAGE);
}
}
});
}
}
上面是一个button的监听,然后调用了下面引入JTable的函数,我想请问一下为什么我点击多次button1以后,再点击button2时数据库会把每次点击button1时所选择的数据更新一次呢,有什么办法让他只更新本次的选择?请各位高手帮我解决一下,谢谢了。
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
String str1 = datepick1.getText();
String str2 = datepick2.getText();
checkTime(str1,str2);
if (tablePanel.getComponentCount()!= 0)
tablePanel.removeAll();
setJTable(str1, str2, tablePanel);
tablePanel.updateUI();
}
});
//显示JTable
public void setJTable(String str1,String str2, JPanel panel){
Date startDate = new Date(str1);
Date endDate = new Date(str2);
final String str3 = str1.replace("/", "").replace(" ", "").substring(0,10);
final String str4 = str2.replace("/", "").replace(" ", "").substring(0,10);
final String depName = (String) depComboBox.getSelectedItem();
final double total = analyst.getTotalDD(depName, str3, str4);
System.out.println(total);
if(total > 0)
{
final long n = (endDate.getTime()-startDate.getTime())/3600000-1;
final Object[][] data = new Object[(int) n][3];
Object[] columnNames = { "DATE_TIME" , "VALUE", "percentage"};
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
int i;
for (i=0; i < (int)n; i++)
{
cal.setTime(startDate);
cal.add(Calendar.HOUR_OF_DAY, i+1);
String date_time = sdf.format(cal.getTime());
Object[] temp = new Object[]{date_time, 0, 0.00};
data[i] = temp;
}
DefaultTableModel model = new DefaultTableModel(data, columnNames);
table = new JTable(model);
model.addTableModelListener(new TableModelListener()
{
public void tableChanged(TableModelEvent e) {
if(e.getType()==TableModelEvent.UPDATE)
{
if(table.getSelectedColumn()==2){
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
Double percent = Double.parseDouble(tableModel.getValueAt(table.getSelectedRow(),2).toString());
tableModel.insertRow(table.getSelectedRow(),new Object[]{tableModel.getValueAt(table.getSelectedRow(),0),percent*total,percent});
tableModel.removeRow(table.getSelectedRow()+1);
}
//System.out.println("Update Row "+table.getSelectedRow()+"Col :"+table.getSelectedColumn());
} }
});
JScrollPane scrollPane = new JScrollPane();
scrollPane.getViewport().add(table);
panel.add(scrollPane);
//button2的监听事件 button2.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
String [][] dataValue = new String[tableModel.getRowCount()][2];
double sum = 0;
for(int i =0;i<tableModel.getRowCount();i++){
dataValue[i][0] = (String)tableModel.getValueAt(i,0);
dataValue[i][1] = tableModel.getValueAt(i,2)+"";
sum += Double.parseDouble(tableModel.getValueAt(i,2).toString());
}
if (sum!=1)
{
JOptionPane.showMessageDialog(label2, "sum(percentage)="+sum+" 不等于 1!","", JOptionPane.INFORMATION_MESSAGE);
}
else
{
analyst.dataAnalyst(dataValue, depName, str3, str4);
JOptionPane.showMessageDialog(label3, "修改成功","", JOptionPane.INFORMATION_MESSAGE);
}
}
});
}
}
上面是一个button的监听,然后调用了下面引入JTable的函数,我想请问一下为什么我点击多次button1以后,再点击button2时数据库会把每次点击button1时所选择的数据更新一次呢,有什么办法让他只更新本次的选择?请各位高手帮我解决一下,谢谢了。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货