【问题标题】:Is there away to fix the JTable same is before search?是否可以在搜索之前修复 JTable 相同的问题?
【发布时间】:2020-09-05 21:01:50
【问题描述】:

我有一个 jtable,如图所示,带有 2 个 JDateChooser,当我搜索并填充表格时它丢失了单元格渲染有没有办法修复它? 我已经尝试了很多建议的东西,但都没有成功

这是用于搜索和设置模式的按钮的操作

JButton btnNewButton = new JButton("New button");
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {


                try {

                    java.sql.Date lowerdate = new java.sql.Date(dateChooser.getDate().getTime());
                    java.sql.Date upperdate =  new java.sql.Date(dateChooser_1.getDate().getTime());
                    Connection con = DerbyConnection.dbConnector();

                    PreparedStatement   pstmt = con.prepareStatement("select * from COMPANYCHEKS  WHERE CHEKSDATEIN >= ? AND CHEKSDATEIN <= ?");
                    pstmt.setDate(1, lowerdate);
                    pstmt.setDate(2,upperdate);
                    ResultSet rs = pstmt.executeQuery();
                    table.setModel(Menu32.resultSetToTableModel(rs));

                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

            }
        });

这是我的模型集,将被调用以使用结果填充表格

 public static TableModel resultSetToTableModel(ResultSet rs) {
                try {
                    ResultSetMetaData metaData = rs.getMetaData();
                    int numberOfColumns = metaData.getColumnCount();
                    Vector<String> columnNames = new Vector<String>();

                    columnNames.add("الرمز");
                    columnNames.add("العميل");
                    columnNames.add("البنك");
                    columnNames.add("تاريخ الشك");
                    columnNames.add("رقم الشك");
                    columnNames.add("القيمة");
                    columnNames.add("العملة");
                    columnNames.add("سعر الصرف");
                    columnNames.add("القيمة بالدولار");
                    columnNames.add("تاريخ الإيداع");
                    columnNames.add("بنك الإيداع");
                    columnNames.add("الحالة");
                    columnNames.add("ملاحظات");



                    // Get all rows.
                    Vector<Vector<Object>> rows = new Vector<Vector<Object>>();

                    while (rs.next()) {
                    Vector<Object> newRow = new Vector<Object>();

                    for (int i = 1; i <= numberOfColumns; i++) {
                        newRow.addElement(rs.getObject(i));
                    }

                    rows.addElement(newRow);
                    }

                    return new DefaultTableModel(rows, columnNames);
                } catch (Exception e) {
                    e.printStackTrace();
                    return null;
                }


            }

在这里你可以看到发生了什么

搜索前的表格:

填充后的表格:

【问题讨论】:

    标签: java swing user-interface jtable


    【解决方案1】:

    当我搜索并填充表格时,它会丢失单元格渲染,有没有办法修复它?

    默认情况下,当您为表创建新模型时,会根据 TableModel 中的新数据创建一个新的 TableColumnModel,并且您会丢失自定义渲染器。

    假设模型的列是相同的,并且只有数据行发生了变化,您可以通过调用来阻止创建 TableColumnModel:

    table.setAutoCreateColumnsFromModel( false );
    

    在您使用原始 TableModel 创建 JTable 之后。

    【讨论】:

    • 没有尝试过,但我在数据库中的插入代码有一些错误,因为 iam 有一个 double 类型,它显示“DOUBLE 类型的字符串格式无效。”
    • 再次感谢您的帮助
    猜你喜欢
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多