我在做Swing开发的过程中用到JTable,在测试过程中发现鼠标双击表格的某个cell都能进入编辑状态,请问有没有办法屏蔽掉双击选中,防止表格内容被编辑?
[b]问题补充:[/b]
我重写了一遍,但仍然无效,我的代码如下:
class DefTab extends
javax.swing.table.DefaultTableModel {
DefTab(Vector vList,Vector tabTitle){
super();
int m = vList.size();
for(int i=0; i<m; i++){
int n = ((Vector)vList.get(i)).size();
for(int j=0; j<n; j++){
this.isCellEditable(i, j);
}
}
}
public boolean isCellEditable(int row,int column) {
return false;
}
}
麻烦看一下问题出在哪?谢谢!
参照下面的代码。
[code="java"]
import java.awt.BorderLayout;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class MyTableModel extends DefaultTableModel{
public MyTableModel(Vector data, Vector columnNames) {
super(data, columnNames);
}
public boolean isCellEditable(int row, int column) {
return false;
}
public static void main(String[] args) {
Vector<String> row1 = new Vector<String>();
row1.add("123");
row1.add("456");
row1.add("789");
Vector<String> row2 = new Vector<String>();
row2.add("123");
row2.add("456");
row2.add("789");
Vector<Vector> data = new Vector<Vector>();
data.add(row1);
data.add(row2);
Vector<String> columnNames = new Vector<String>();
columnNames.add("C1");
columnNames.add("C2");
columnNames.add("C3");
MyTableModel model = new MyTableModel(data, columnNames);
JTable table = new JTable(model);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(table);
JFrame frame = new JFrame("MyTableModel");
frame.setLayout(new BorderLayout());
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
[/code]
自己实现重写DefaultTableModel类,将isCellEditable(int row, int column) 方法的返回值始终设置为false。
然后将该DefaultTableModel类的实例作为JTable的数据模型。
具体参照JTable和DefaultTableModel类的JavaDoc。