【问题标题】:Why cannot add row to jtable?为什么不能向 jtable 添加行?
【发布时间】: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没有错误也没有数据:(

有什么建议吗?

谢谢!

【问题讨论】:

  • 不回答你的问题,我建议你不要使用SimpleDateFormatCalendar。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而不是将当前时间作为字符串使用 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


【解决方案1】:

我找到了解决办法!

真的很蠢,但无论如何......

我在二等:

FIRSTFRAME_Okno = new FIRSTFRAME_Okno();

因为 jTable1 没有更新。

我使用的第二类调用的每个函数:

FIRSTFRAME_Okno.functionName();

Tnx!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 2023-04-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    相关资源
    最近更新 更多