当前位置: 首页 > 知识库问答 >
问题:

JTable和DefaultTableModel

段干华晖
2023-03-14

我有一个从本地MySQL服务器获取信息的表。它很好地读取数据并将其发布在GUI上。

private String sql = "select * from profildb.tbl_detailed";  //to
private String sql = "select * from profildb.tbl_detailed where Y.."; //this
    JButton btnOK = new JButton("");
    btnOK.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

            if( (tfBirinci.getText().isEmpty() || tfBirinci.getText() == null) && (tfIkinci.getText().isEmpty() || tfIkinci.getText() == null ))
            {
                taLog.setText("Database alani bos birakilamaz...\n");
            }
            else if ( (!(tfBirinci.getText().isEmpty() )) && (tfIkinci.getText().isEmpty() || tfIkinci.getText() == null ) )
            {
                sql = ("SELECT * FROM " + tfBirinci.getText());
                taLog.setText("Komut elde edildi : " + sql + "\n");
                System.out.println("aaaa " + tfBirinci.getText());
                //anaFrame.dispose();
                //databaseHistoryCalistir(); doesnt work
            }
            else if ( ( !(tfBirinci.getText().isEmpty() ) &&  !(tfBirinci.getText() == null) )  && ( !(tfIkinci.getText().isEmpty() ) && !(tfBirinci.getText() == null) ) )
            {
                sql = ("SELECT * FROM " + tfBirinci.getText() + " WHERE " + tfIkinci.getText());
                taLog.setText("Komut elde edildi : " + sql + "\n" );
                System.out.println("bbbb " + tfBirinci.getText());
                //anaFrame.dispose();
                //databaseHistoryCalistir(); doesnt work
            }else 
                taLog.setText("Lütfen Database alanini doldurunuz, aksi taktirde komut elde edilemez...\n");
        }
    });

提前道谢。(给出一个关于DefaultTableModel的例子会很棒)

共有1个答案

杜苏燕
2023-03-14

1)通过@camickr使用数据库中的表

2)使用resultsettablemodel之一

3)从runnable#Thread调用SQL语句,但对xxxTableModel的输出必须在invokelater内部,更多的内容请参见Swing中关于事件调度线程(EDT)的一致性

4)从SwingWorker调用SQL语句,然后从progress()publish()done()输出,应该在EDT上

5)DefaultTableModel不需要重写方法FirexxxTablexxx,所有方法都正确实现了

6)来自数据库的逻辑表(ResultsetTableModel)Runnable#Thread(SwingWorker)之间的区别是

>

  • 来自数据库的表(ResultsetTableModel)调用EDT上的所有更新,然后GUI等待所有事件完成,从数据库加载数据期间GUI不负责或冻结

    runnable#thread(SwingWorker)所有更新都来自后台任务,

  •  类似资料:
    • 问题内容: 如何使用单选按钮对jtable列进行排序? 我的jtable是defaultTableModel而不是向量。 当用户按下列标题时,我已经实现了,它将进行排序,现在我必须使用单选按钮来实现。 实现此目标的最佳方法是什么? 问题答案: 要以编程方式进行排序,请将以下代码添加到侦听器中:

    • 我有一个JTable,它显示保存在ArrayList集合中的customer对象列表。从这个JTable中,我希望能够突出显示一个特定的客户,然后单击一个“delete customer”按钮,该按钮从选定的表行中提取ID列值,并用它用迭代器在ArrayList中搜索,找到匹配的客户,并将其从集合中删除。我在swing组件和eventlisteners方面的专业知识还有很多需要改进的地方,到目前为

    • 我在更新/刷新表中的数据时遇到问题。我使用的是DefaultTableModel。以下是代码,请分享您的知识和建议。顺致敬意, *编辑1:*原始代码有一个更新表数据的函数,但事实证明这是错误的,因为构造函数一次又一次地创建新的JTable和新的JScrollPane。这就是为什么我创建了新的构造函数,并修复了这个bug。在我实现了新的构造函数之后,表数据仍然没有刷新。接下来,我尝试调试构造函数从另

    • jTable 是一个 jQuery 插件用来创建基于 Ajax 的 CRUD 表格,无需进行 HTML 和 JavaScript 编码。 主要特性包括: Automatically creates HTML table and loads records from server using AJAX. Creates 'create new record' jQueryUI dialog form

    • 问题内容: 有没有办法在JTable中实现html表格之类的行跨度和colspan。 问题答案: 这是一个非常古老的例子。我不知道它是否仍然有效: http://www.java2s.com/Code/Java/Swing- Components/MultiSpanCellTableExample.htm

    • 经过一番研究,我找到了一个方法(如果我理解正确的话,那是一个冗长而乏味的方法)在我的JTable中实现公式。 下面是该表的样子(正如您可能知道的那样,它是用netbeans编辑的,不要介意大量的空部分,我们稍后将讨论它) 以下是问题: a)是否可以制作一个类似excel的公式来添加单元格?(类似于添加单元格C2:C6,因为我确实在excel文件中导出了该表,我想如果有类似的方法也是可能的。) 2a