gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:38:11 25 4
gpt4 key购买 nike

我正在尝试添加类似于 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);

提前致谢

最佳答案

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

也许你想要类似的东西

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

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

您下面的示例就是这样做的,实际上它创建了以模型作为参数的表...

提示:为什么 new MainClass() 位于 new MainClass().new RadioButtonRenderer(... 等中?您真的想要一个新的 MainClass?将这些类声明为static 并删除 new MainClass()

关于java - 不在 jtable 的列内显示单选按钮组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45057735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com