Java在DefaultTableModel上创建监听器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java在DefaultTableModel上创建监听器相关的知识,希望对你有一定的参考价值。
我正在使用Java构建Java Swing应用程序。我有我的JPanel
有一个JTable
与自定义TableModel
。现在我想知道是否可以注册一个envet然后如果在表模型中我开始这个事件,JPanel
拦截这个事件并执行一个方法。
这是我的TableModel
:
public class MyTableModelScontriniArticoli extends defaultTableModel {
private static final String[] columnNames = {"Cod.Prod.", "Descrizione",
"Qta", "Prezzo cad.", "% Sconto", "Prezzo Tot"};
public HashMap<String, ArticoliScontrini> mappaArticoli =
new HashMap<String, ArticoliScontrini>();
private static NumberFormat decimalFormatter2 = new DecimalFormat("#,##0.00");
private Integer numeroPz = 0;
public Boolean gestisciTagliaColore;
public MyTableModelScontriniArticoli() {
}
public MyTableModelScontriniArticoli(boolean gestisciTagliaColore) {
super(columnNames, 1); // 10 righe iniziali (vuote)
mappaArticoli = new HashMap<String, ArticoliScontrini>();
this.gestisciTagliaColore = gestisciTagliaColore;
}
public MyTableModelScontriniArticoli(String[] columnnames2, int i) {
super(columnnames2, 1); // 10 righe iniziali (vuote)
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
super.setValueAt(aValue, rowIndex, columnIndex);
if (columnIndex == 2) {
//TO DO METHOD 2
//LAUNCH EVENT
} else if (columnIndex == 3) {
//TO DO METHOD 3
//LAUNCH EVENT
} else if (columnIndex == 4) {
//TO DO METHOD 4
//LAUNCH EVENT
} else if (columnIndex == 6) {
//TO DO METHOD 6
//LAUNCH EVENT
}
}
}
我的tableModel
延伸DefaultTableModel
。现在我重写setValueAt
方法,我希望在执行条件后我可以运行一个事件,包含我的JPanel
的TableModel
可以拦截它并执行一些方法。
答案
好吧,想想我明白了:把你的TableModel添加到你的表中
jTable1.setModel(new MyTableModelScontriniArticoli());
然后将TableModelListener添加到表中。它将对'fireTableChanged'调用作出反应。
jTable1.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
//do some event stuff
});
你的setValueAt方法:
switch(columnIndex){
case 2: /*do your stuff*/ break;
case 3: /*do your stuff*/ break;
case 4: /*do your stuff*/ break;
}
//this.fireTableChanged(new TableModelEvent(this, rowIndex,rowIndex,columnIndex));
fireTableCellUpdated(rowIndex, columnIndex);
以上是关于Java在DefaultTableModel上创建监听器的主要内容,如果未能解决你的问题,请参考以下文章
Java Swing 如何使用DefaultTableModel交替刷新JTable?
如何将DefaultTableModel对象的数据放入DefaultTableModel的子类中