有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JTable中的java JCheckbox

我正在创建一个基于swing的身份验证系统,我有一个表,希望在其中打印一些必要的详细信息,并希望最后一列有一个复选框。即使在给出布尔值后,它也会打印true或false,而不是复选框

                controlPanel.removeAll();
                System.out.println("coming1");
                JournalApprovalClass JAC = new JournalApprovalClass();
                JournalApproval JA = new JournalApproval();

                String[] columns = { "Author1", "Author2", "Author3",
                        "Author4", "Author5", "Author6", "Title",
                        "JournalName", "Scopus", "ImpactFactor",
                        "JournalMonth", "JournalYear", "NamePublisher",
                        "VolumeIssuePageNo", "BtechMtech", "OtherDetails",
                        "Approval" };
                System.out.println("coming2");

                try {
                    JA.adminApprovalJournalApproval();
                } catch (ClassNotFoundException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                System.out.println("coming3");
                DefaultTableModel model = new DefaultTableModel(
                        journalTable.values2, columns);
                JTable journalAdminApprovalTable = new JTable(model);

                journalAdminApprovalTable
                        .setPreferredScrollableViewportSize(new Dimension(
                                1200, 100));
                journalAdminApprovalTable.setFillsViewportHeight(true);
                TableColumn column = null;
                for (int i = 0; i <= 16; i++) {
                    column = journalAdminApprovalTable.getColumnModel()
                            .getColumn(i);
                    column.setPreferredWidth(50);
                    if (i == 16) {
                        column.setPreferredWidth(10);
                    }

                }
                System.out.println("coming4");
                JScrollPane scrollPane = new JScrollPane(
                        journalAdminApprovalTable);
                controlPanel.add(scrollPane);
                controlPanel.revalidate();
                controlPanel.repaint();
                System.out.println("coming5");

这就是我试图创建数据对象在另一个类中创建的表的地方

                ma.values[0] = au.Author1;
                ma.values[1] = au.Author2;
                ma.values[2] = au.Author3;
                ma.values[3] = au.Author4;
                ma.values[4] = au.Author5;
                ma.values[5] = au.Author6;
                ma.values[6] = au.Title;
                ma.values[7] = au.JournalName;
                ma.values[8] = au.Scopus;
                ma.values[9] = au.ImpactFactor;
                ma.values[10] = au.JournalMonth;
                ma.values[11] = au.JournalYear;
                ma.values[12] = au.NamePublisher;
                ma.values[13] = au.VolumeIssuePageNo;
                ma.values[14] = au.BtechMtech;
                ma.values[15] = au.OtherDetails;
                ma.values[16] = new Boolean(true);
                /*if (au.AdminApproval == "NO") {
                    ma.values[16] = new JCheckBox("Approval");
                } else
                    ma.values[16] = new Boolean(true);*/
                ma.values1[i] = new Object[17];
                ma.values1[i] = ma.values;

                System.out.println(ma.values1[i] + " " + ma.values[0] + " "
                        + i);
                i++;
            }
            resultSet.next();
        }
        journalTable.values2 = new Object[i][];
        for (int j = 0; j < i; j++)
            journalTable.values2[j] = journalTable.values1[j];
        return;

一切都正常工作,但我希望的是有一个复选框,它总是被选中(给出真实的原因)。 当我运行代码时,我得到以下输出

last column i need a checkbox


共 (1) 个答案

  1. # 1 楼答案

    这是因为您的模型是在字符串而不是对象上操作的。我无法运行您的代码,但如果我是您,我会:

    1. 尝试将String[] columns更改为Object[] columns
    2. 如果 没用,看看this