java jtable实现在某一列为非空时.某些列不可编辑
关注:82 答案:1 手机版
解决时间 2021-02-06 01:43
提问者萌萌兔
2021-02-05 18:38
具体些.
最佳答案
二级知识专家归人
2021-02-05 19:22
给你一个简单的例子,
总的原则是重写TableModel的isCellEditable方法
具体的实现,需要你根据需要调整。
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import java.awt.BorderLayout;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class App extends JFrame {
private JTable table;
private DefaultTableModel model = null;
private String[] columnTitle = { "no", "name", "sex", "age", "mail" };
private String[][] columnData = { { "no", "name", "", "age", "mail" },
{ "no", "name", "", "age", "mail" },
{ "no", "name", "", "age", "mail" },
{ "no", "name", "", "age", "mail" } };
private boolean[][] cellEditables = null;
public App() {
setSize(600, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JScrollPane scrollPane = new JScrollPane();
getContentPane().add(scrollPane, BorderLayout.CENTER);
cellEditables = new boolean[columnData.length][];
for (int i = 0; i < columnData.length; i++) {
cellEditables[i] = new boolean[columnData[i].length];
for (int j = 0; j < columnData[i].length; j++) {
cellEditables[i][j] = !columnData[i][j].isEmpty();
}
}
model = new MyModel(columnData, columnTitle);
table = new JTable(model);
scrollPane.setViewportView(table);
setVisible(true);
}
public static void main(String[] args) {
new App();
}
class MyModel extends DefaultTableModel {
public MyModel(String[][] rowData, String[] columns) {
super(rowData, columns);
}
public boolean isCellEditable(int row, int column) {
return cellEditables[row][column];
}
}
}
我要举报
如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
推荐资讯
大家都在看