- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在创建一个 UI 类,所有内容都将在其中运行(另一个类将作为运行器)。在这个类中,我有一个表,该表应该在更改时创建 TableModeEvents,但它似乎没有这样做。
每当我对表格进行任何操作时,控制台应该打印出“test”,但事实并非如此。我已经制作了其他 SSCCE,只要我将所有内容都保存在一个程序中(在主要方法中并且只有子类和匿名类),它们就可以正常工作,但我似乎无法让它跨类工作。
知道我做错了什么吗?
package SSCCE;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
public class SSCCE {
static Object[][] data = { {"Abyss", Boolean.FALSE},{"Scepter", Boolean.FALSE},{"FoN", Boolean.FALSE} };
public static void main(String[] args){
//table model------------------------------------------
TableModel model = new AbstractTableModel(){
Object[][] rowData = { {"Abyss", Boolean.FALSE},{"Scepter", Boolean.FALSE},{"FoN", Boolean.FALSE} };
String[] columnNames = {"Name","Boolean"};
public int getColumnCount() {return columnNames.length;}
public String getColumnName(int column) {return columnNames[column];}
public int getRowCount() {return rowData.length;}
public Object getValueAt(int row, int column) {return rowData[row][column];}
public Class getColumnClass(int column) {return (getValueAt(0, column).getClass());}
public void setValueAt(Object value, int row, int column) {rowData[row][column] = value;}
public boolean isCellEditable(int row, int column) {return (true);}
};
JTable table = new JTable(model);
//tableChanged------------------------------------------
model.addTableModelListener(new TableModelListener(){
public void tableChanged(TableModelEvent e) {
System.out.println("test");
}
});
//frame stuff, ignore-----------------------------------
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.add(table,BorderLayout.CENTER);
frame.setSize(500,400);
frame.setLocation(400,200);
frame.setDefaultCloseOperation(3);
frame.setVisible(true);
}
}
最佳答案
当您更改任何表格单元格的值时,将调用 setValueAt
方法,但不会触发任何事件。
尝试将 fireTableCellUpdated(row, column)
方法调用添加到您的 setValueAt
方法中,如下所示:
public void setValueAt(Object value, int row, int column) {
rowData[row][column] = value;
fireTableCellUpdated(row, column);
}
请注意,您也可以fireTableDataChanged()
,但这会触发最一般的事件,建议您触发最具体的事件,因为它避免了不必要的工作并且能够维持选择状态.
关于java - 似乎无法让 TableModelListener 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7642138/
我有一个使用jTable(使用netbeans)的数据库应用程序,我已经向jTable添加了一个表模型监听器,因此当我编辑jTable时,它也会编辑数据库(MySQL)。然而,当用户单击 jTable
第一次在这里发帖,如有错误请见谅 我正在处理一个 JTable,其中的列数据必须验证一些参数,例如: 第 3 列值 > 30 第 4 列值 > 10 第 5 列值 > 4 前 2 列也是“自动”填充的
我正在使用java swing开发一个应用程序,其中有一个jTable,我从数据库导入数据。我想直接从jTable更新我的数据库。因此,根据我找到的代码(抱歉我不记得链接),我设法使用TableMod
我在运行时在表模型中实现了“addTableModelListener”,但我想再创建一个控件来删除它。我在Google上搜索过,但没有找到任何合适的逻辑来实现删除表模型监听器。 请帮助我实现 rem
我有一个 Jtable,TableModelListener 正在监听 实现者 private void anadeListenerAlModelo() { tabla.getModel().
什么时候应该创建自己的 TableModelListeners 和 DataModelEvents? 我知道 DefaultTableModel、AbstractTableModel 和 TableM
我正在创建一个 UI 类,所有内容都将在其中运行(另一个类将作为运行器)。在这个类中,我有一个表,该表应该在更改时创建 TableModeEvents,但它似乎没有这样做。 每当我对表格进行任何操作时
我在将 TableModelListener 添加到 AbstractTableModel 时遇到了问题。程序停止工作,JFrame 不响应任何按钮单击,甚至关闭 JFrame。 我想要的是当 myT
这是我第一次使用 JTable。我通过 DAO 模式从数据库中提取数据,将其保存在一个集合中,读取该集合并用它填充我的 JTable。但是,我也在使用 MVC 模式,并且不知道如何正确更新我的 Vie
我对 Java 很陌生,我一直在使用 jTable 开发 GUI。我有一个 jTable,我想从中跟踪更改,因此我动态地向其 TableModel 添加了一个 TableModelListener。但
我不确定为什么这是递归的。 jTable1.getModel().addTableModelListener(new TableModelListener() { public void table
我目前正在使用两个 JTable。他们每个人都有自己的自定义 TableModel。 在第一个 JTable 中,我有可以选择的项目(复选框)。第二个开始是空的。当我检查第一个表中的一行时,该行的 b
我创建了一个TableModelListener来监听特定的列。具体来说,列2,3,4,5。这样,当 2-5 中的任何列有值或 not null 时,它会将值存储添加到 BigDecimal 值中以获
我想使用 TableModelListener 将第二列设置为 JComboBox 编辑器。还想根据第一列中选定的组合框更改第二列中组合框的模型。在这里,我实现了一个监听第一列的监听器。 priv
我有一个简单的程序,可以使用 JTable 显示数据库的表。我有一个组合框,列出所有可用的表,还有一个 actionListener,每次更改时将模型设置为表。这按预期工作。我遇到的问题是,当选择一个
TableModelListener(第 87 行/HERE-1)是否会干扰我的 JTable 的 addRow 方法(第 139 行,HERE-2)?如果是这样我该如何解决? 此代码可以编译,但当我
我的 JTable 有一个列,其中包含用于维护状态的 JCheckBox。当我不实现 TableModelListener 并运行程序时,数据将显示在 JTable 中。但是当我运行实现了 Table
我是一名优秀的程序员,十分优秀!