不在 jtable 的列内显示单选按钮组

Not showing radio button group inside column in jtable

我正在尝试添加类似于 http://www.java2s.com/Code/Java/Swing-Components/RadioButtonTableExample2.htm

的单选按钮组

在我的表单中,我遵循了上述教程,但我使用的是 AbstractTableModel 而不是 DefaultTableModel

这是我的代码,它没有在列上显示任何内容,没有错误:

StudentTableModel model = new StudentTableModel(studentList);

    // JScrollPane scrollPane = new JScrollPane(table);
    final JScrollPane scrollPane = new JScrollPane(
            table,
            JScrollPane.VERTICAL_SCROLLBAR_NEVER,
            JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    Dimension d = table.getPreferredSize();
    scrollPane.setPreferredSize(
            new Dimension(d.width,table.getRowHeight()*rows));

    // code for radio buttons
    String[] answer = { "A", "B", "C" };
    TableColumnModel columnModel = table.getColumnModel();

    for (int tc = 7; tc < table.getColumnCount(); tc++)
    {
    columnModel.getColumn(tc).setCellRenderer(
            new MainClass().new RadioButtonRenderer(answer));
    columnModel.getColumn(tc).setCellEditor(
            new MainClass().new RadioButtonEditor(new JCheckBox(),  new MainClass().new RadioButtonPanel(
                    answer)));
    }
    table.setModel(model);

    frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
    frame.getContentPane().add(navigation, BorderLayout.SOUTH);
    frame.pack();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

提前致谢

代码是尝试在设置模型之前设置渲染器和编辑器。因此没有可设置 renderer/editor 的列。必须首先设置模型,然后才会创建列 - 仅创建模型不会 link 到 table,table 事先不知道它将有多少列有。

可能你想要

StudentTableModel model = new StudentTableModel(studentList);
table.setModel(model);    // moved from below

// JScrollPane scrollPane = new JScrollPane(table);
...

您所关注的示例是这样做的,实际上它创建了 table 并将模型作为参数...

提示:为什么 new MainClass()new MainClass().new RadioButtonRenderer(... 和其他人中?你真的想要一个新的 MainClass 吗?将这些 类 声明为 static 并删除 new MainClass()