gpt4 book ai didi

java - JTable 设置特定单元格不可编辑?

转载 作者:行者123 更新时间:2023-11-29 04:26:29 25 4
gpt4 key购买 nike

我想在我的 JTable 中设置一些不可编辑的单元格。我也搜索了一些解决方案like this one ,但我不让它工作...

到目前为止,这是我的代码:

public void cellEditableForum(JTable tempTable){
DefaultTableModel tempTableModel = (DefaultTableModel) tempTable.getModel();
int rows = tempTableModel.getRowCount();
int columns = tempTableModel.getColumnCount();

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (j == 0 || j == 5) {
//TODO: Make cell not editable!
tempTableModel.fireTableCellUpdated(i, j);
System.out.println("Row: " + i + " Cell: " + j + tempTableModel.isCellEditable(i, j));
}
}
}
}

不,我不能重写 isCellEditable() 函数,因为我只想设置几个选定的单元格对于不同的表格不可编辑。这就是我创建函数和 if 检查的原因!

有人可以帮帮我吗?

最佳答案

这是支持不可编辑单元格的特殊表格模型

import java.util.HashMap;
import java.util.Map;

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

public class EditableTableModel extends DefaultTableModel {

private Map<String, Boolean> editableMap = new HashMap<>();

public void setCellEditable(int row, int column, boolean editable) {
editableMap.put(row + ":" + column, editable);
}

@Override
public boolean isCellEditable(int row, int column) {
return Boolean.FALSE != editableMap.get(row + ":" + column);
}

public static void main(String[] args) {
JFrame frm = new JFrame("Test frame");
EditableTableModel model = new EditableTableModel();
model.setRowCount(10);
model.setColumnCount(5);
model.setCellEditable(0, 0, false);
frm.add(new JScrollPane(new JTable(model)));
frm.pack();
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frm.setLocationRelativeTo(null);
frm.setVisible(true);
}
}

关于java - JTable 设置特定单元格不可编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46047446/

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