DefaultTableModel问题,急!!!

flywind63 2004-03-25 12:49:34
(1)我用DefaultTableModel(Vector data, Vector colNames)构造是总是出错!
(2)我想在JTable中当一列数据发生变化时,可以修改另外列的数据!比如我有三个类,分别是代表单价,数量和金额,有没有办法在焦点离开单价或者数量的时候,让金额列的数据更新!!!???
...全文
166 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
veryxiao 2004-04-09
  • 打赏
  • 举报
回复
import java.awt.*;
import java.util.*;
import javax.swing.*;
class JTableConstructor extends JFrame
{
public JTableConstructor(){
setSize(400,300);
Vector vColumnNames = new Vector();
vColumnNames.add("COLUMN1");
vColumnNames.add("COLUMN2");
Vector vRowData = new Vector();
for(int i = 0 ;i <10; i++){
Vector vOneRow = new Vector();
vOneRow.add("COLUMN1Data" + Math.random());
vOneRow.add("COLUMN2Data" + Math.random());
vRowData.add(vOneRow);
}
JTable table = new JTable(vRowData,vColumnNames);
JScrollPane sp = new JScrollPane(table);
getContentPane().add(sp,BorderLayout.CENTER);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
JTableConstructor frame = new JTableConstructor();
frame.validate();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setDefaultCloseOperation(3);
frame.setLocation( (screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
//frame.setExtendedState(Frame.MAXIMIZED_BOTH);
}
}
flywind63 2004-03-26
  • 打赏
  • 举报
回复
谢谢!现在可以添加事件了,不过添加之后还是不起作用!为什么有上面的方法不能添加哪?
swingsxlong 2004-03-25
  • 打赏
  • 举报
回复
建議
mt.addTableModelListener(new TableModelListener(){
public void tableChanged(TableModelEvent e){
if(e.getType()==TableModelEvent.UPDATE){
......
}
}
}) ;

不要直接用
mt.addTableModelListener(this);

public void tableChanged(TableModelEvent e)
{
......
}
flywind63 2004-03-25
  • 打赏
  • 举报
回复
Vector rowData = new Vector();
Vector colNames = new Vector();
DefaultTableModel mt;
JTable jtable1;
Object[][] p = {{new String(""), new String(""), new String(""), new String(""), new Double(0), new Double(0), new Double(0)}};
rowData.add(p);

colNames.add("产品编号");
colNames.add("名称");
colNames.add("规格");
colNames.add("厂家");
colNames.add("单价");
colNames.add("数量");
colNames.add("金额");

//就在这里构造出错
mt = new DefaultTableModel(rowData, colNames);

jTable1 = new JTable1(mt);

//这里说 addTableModelListener(javax.swing.event.TableModelListener) in javax.swing.table.AbstractTableModel cannot be applied to
mt.addTableModelListener(this);

public void tableChanged(TableModelEvent e)
{
int row = e.getFirstRow();
int column = e.getColumn();
double dj1 = ((Double)(mt.getValueAt(row,3))).doubleValue();
double sl1 = ((Double)(mt.getValueAt(row,4))).doubleValue();
double total = dj1 * sl1;
mt.setValueAt(new Double(total),row,5);
jTable1.repaint();
}
jerrygui 2004-03-25
  • 打赏
  • 举报
回复
(1)你最好把源代码贴出来;
(2)必须实现TableModelListener,使用tableChanged()方法

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧