【发布时间】:2021-11-09 10:11:24
【问题描述】:
我需要一些关于添加到 jTable 的帮助。
我有 2 个 jFrame,第一个有 jTable1,第二个有 jTextfields。我想将第二帧的数据(字符串)添加到第一帧的 jTable1 中。我尝试了许多版本并观看了许多教程..但没有成功。
在我有 jTable1 的第一帧中,我有 SwingWorker,我写道:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
jButton1.setEnabled(false);
jButton2.setEnabled(true);
Boolean praznaMapa = false;
worker = new SwingWorker<Void, String>(){
@Override
protected Void doInBackground() throws Exception {
if(isCancelled())
{
return null;
}
AddRowToTable(new Object[]
{
PrviStolpec,DrugiStolpec,TretjiStolpec,timeStamp,
});
}}
worker.execute();}
public static void AddRowToTable (Object [] data)
{
DefaultTableModel tblmodel = (DefaultTableModel)jTable1.getModel();
tblmodel.insertRow(0, data);
}
在第二帧我有我写的文本字段:
String PrviStolpec = FIRSTFRAME_Okno.withoutExtension;
String DrugiStolpec = "OK";
String TretjiStolpec = FIRSTFRAME_Okno.stSledenja;
String timeStamp = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
FIRSTFRAME_Okno.AddRowToTable(new Object[]
{
PrviStolpec,DrugiStolpec,TretjiStolpec,timeStamp,
});
FIRSTFRAME_Okno.jTable1.setSelectionBackground(Color.green);
但是当我运行程序时,什么也没有发生。 jTable1没有错误也没有数据:(
有什么建议吗?
谢谢!
【问题讨论】:
-
不回答你的问题,我建议你不要使用
SimpleDateFormat和Calendar。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而不是将当前时间作为字符串使用ZonedDateTime.now(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))使用来自 java.time, the modern Java date and time API 的类。 -
@OleV.V. tnx 的笔记!
-
1) 方法名称不应以大写字符开头。 2) 变量名不应以大写字符开头。学习并遵循 Java 约定。 3) 一个应用程序应该只有一个 JFrame。如果您需要子窗口,则可以使用
JDialog。 4) 你不应该使用类似FIRSTFRAME_Okno.jTable1的代码来访问另一个类的变量。如果要更新表格,则将“表格”作为参数传递给子对话框。如果子对话框有对可见表的引用,那么上面的代码应该可以工作。 -
@camickr 谢谢你的回答!我更新了我的问题。我认为我在第一个 jframe 中遇到的 SwingWorker 有问题。
标签: java swing jtable defaulttablemodel