我不熟悉JTable。
我想在button press事件中在运行时更新jtable数据。
这是我的密码。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.*;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class SetEditableTableCell extends JPanel {
JPanel top = new JPanel();
JPanel bottom = new JPanel();
JButton update = new JButton("Update");
JTable table;
Vector<String> rowOne;
Vector<String> rowTwo;
DefaultTableModel tablemodel;
public SetEditableTableCell() {
this.setLayout(new BorderLayout());
rowOne = new Vector<String>();
rowOne.addElement("Row1-1");
rowOne.addElement("Row1-2");
rowOne.addElement("Row1-3");
rowTwo = new Vector<String>();
rowTwo.addElement("Row2-2");
rowTwo.addElement("Row2-3");
rowTwo.addElement("Row2-4");
Vector<Vector> rowData = new Vector<Vector>();
rowData.addElement(rowOne);
rowData.addElement(rowTwo);
Vector<String> columnNames = new Vector<String>();
columnNames.addElement("Column One");
columnNames.addElement("Column Two");
columnNames.addElement("Column Three");
tablemodel = new DefaultTableModel(rowData, columnNames);
table = new JTable(tablemodel);
// table.setValueAt("aa", 0, 0);
update.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
updatedata();
}
private void updatedata() {
rowOne = new Vector<String>();
rowOne.addElement("updated Row1-1");
rowOne.addElement("updated Row1-2");
rowOne.addElement("updated Row1-3");
rowTwo = new Vector<String>();
rowTwo.addElement("updated Row2-2");
rowTwo.addElement("updated Row2-3");
rowTwo.addElement("updated Row2-4");
// tablemodel.addRow(rowTwo);
tablemodel.fireTableDataChanged();
table.setModel(tablemodel);
System.out.println("button pressed");
// table.setValueAt("aa", 0, 0);
}
});
JScrollPane scrollPane = new JScrollPane(table);
top.add(scrollPane);
bottom.add(update);
add(top, BorderLayout.NORTH);
add(bottom, BorderLayout.SOUTH);
}
public static void main(String args[]) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SetEditableTableCell obj = new SetEditableTableCell();
frame.add(obj);
//frame.setSize(400, 300);
frame.pack();
frame.setVisible(true);
}
}
但按下“更新”按钮后不会更新。
有人能解决我的问题吗?
提前谢谢。。
使用AbstractTableModel构建自己的表模型,并使用它的“事件”触发器通知JTable对基础模型的更改
它不会更新,因为您没有修改表格模型中的值。通过在
updateData
方法中将新的Vector
分配给rowOne
和rowTwo
,您正在改变其他Vector
实例,而不是您的TableModel
所知道的那些实例。
一种可能的解决方案是重建数据向量并使用
setDataVector
方法
我有一个用TypeScript编写的非常简单的应用程序: src/索引。输电系统 然后我的TypeScript配置: tsconfig.json 我可以使用npx tsc构建代码,然后使用节点运行它/构建/索引。js,访问时http://localhost:3000在浏览器中,我看到一条消息“你好,世界”--到目前为止一切都很好 现在使用我可以观察文件,看看它们是否发生变化,并在发生这种情况时重新
问题内容: 大约一年前,我偶然发现了Java的一个不错的功能,我一生都找不到。 通过一些魔术接口,显然可以在运行时声明一些可替换的类或函数。 我找到了一个很好的示例指南,该人运行了一个简单的小程序,该程序打印了一条特定的消息,然后他使用一种我不记得的方法更新了该程序,然后突然该程序将旧的打印功能替换为新的打印功能。 我尝试浏览Java API来激发我的记忆力和谷歌搜索功能,但没有成功。有人可以帮忙
问题内容: 该示例非常简单:我想通过仅显示文本(canvas.drawText())来让用户知道应用程序在做什么。然后,出现我的第一条消息,而不是其他消息。我的意思是,我有一个“ setText”方法,但它不会更新。 该视图的文本绘制仅通过在onDraw();中执行一个drawText来起作用,因此setText更改了文本但不显示它。 有人建议我用SurfaceView替换视图,但是仅进行几次更新
我将Drools与Eclipse和Maven一起用于一个进行许多模式匹配的应用程序。我想使用KieScanner自动更新正在运行的KieSession,而无需重新启动应用程序。但这似乎不起作用。 我使用的是7.24.0。t043用于组织。kie和org。流口水。 我只使用我的本地Maven存储库,所以我已经指定了路径并在我的settings.xml.中设置为true,我还验证了使用最新版本创建一个
我找了很长时间,所以在标记为重复之前,请务必阅读。 我有一个函数(),它是用一个参数调用的。我想将该id作为前缀添加到每个日志消息中。每次调用函数时,它都会更改。因此,我想更新记录器模式,将此id添加为前缀。 我读过: 如何配置 如何重新配置 SO和log4j论坛上的许多帖子都在讨论如何在运行时更改配置。它们要么过时,要么根本不起作用。 以下代码基于 log4j2 文档。它打印: 如果我注释掉行然
我是playframework应用程序开发人员。我使用jpa中的createNativeQuery方法通过select查询从表中提取值。我需要使用更新查询。我要做的是什么,以及该方法的返回类型是什么。请任何人帮助我。提前谢谢。如果我这样使用,它会显示错误。。 Query query=JPA.em()。createNativeQuery(" update truck set flag = ' YES