gpt4 book ai didi

java - Jtable 复选框不可编辑

转载 作者:行者123 更新时间:2023-11-29 05:12:14 27 4
gpt4 key购买 nike

我知道这是一个非常基本的问题 我在表格的第一列中有复选框 问题是复选框不可单击。我搜索了类似的线程并尝试将 boolean 编辑器分配给该列并覆盖 getColumnClass() 但我做不到这是我到目前为止所尝试的

String[] columnNames = {"Column 1", "Column 2"};  
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
table=new JTable(model );
table.getColumnModel().getColumn(0).setCellRenderer( table.getDefaultRenderer(Boolean.class) );

ArrayList<org.jsoup.nodes.Element >arr=GetrowCount("http://www.mit.edu/");
for (org.jsoup.nodes.Element element : arr) {
Object[] rows = {Boolean.FALSE, element};
model.addRow( rows );
}

scrollPane=new JScrollPane(table);

panel.add(scrollPane);
this.add(panel);
this.setSize(300,300);

最佳答案

您的 JCheckBox 不可编辑,因为您为列设置了 Renderer,但要进行编辑,您需要添加 Editor,阅读更多关于 Editors and Renderers 的信息.

另一种方法是覆盖 TableModelgetColumnClass() 方法并为列返回 Boolean.class:

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class TestFrame extends JFrame {

public static void main(String... s) {
new TestFrame();
}

public TestFrame() {
init();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}

private void init() {
String[] columnNames = {"Column 1", "Column 2"};
DefaultTableModel model = new DefaultTableModel(columnNames, 0){
@Override
public Class<?> getColumnClass(int columnIndex) {
return columnIndex == 0 ? Boolean.class : super.getColumnClass(columnIndex);
}
};
JTable table=new JTable(model );

for (int i =0;i<5;i++) {
Object[] rows = {Boolean.FALSE, i};
model.addRow( rows );
}

add(new JScrollPane(table));
}
}

关于java - Jtable 复选框不可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28021995/

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