创建JTable组件时,默认情况下启用单元格编辑.如何阻止用户编辑JTable的内容?
我创建了一个将数据加载到a中的函数JTable.一切正常,但该表中的所有单元格都是可编辑的.顺便说一句,我用defaultTableModel的是桌子模型.我在Netbeans IDE中这样做.请帮忙.这是我的代码:
private void updateTable(String searchText){
if(searchText != null)
this._sqlCmd = this._sqlCmd + " WHERE "+columnCombo.getSelectedItem()+" LIKE '%"+searchText+"%'";
jTable1.setSurrendersFocusOnKeystroke(true);
table = (javax.swing.table.DefaultTableModel) jTable1.getModel();
try{
table.setRowCount(0);
}catch(Exception e){}
try {
ResultSet rs = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY).executeQuery(_sqlCmd);
while (rs.next()){
Object[] data = new Object[numOfCols];
for(int i=0; i<data.length; i++){
data[i] = rs.getObject(i+1);
}
table.addRow(data);
}
table.fireTableDataChanged();
} catch (SQLException ex) {
Logger.getLogger(FindContactGrid.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud) 我在我的代码中重写了JTable类的isCellEditable()方法,使我的JTable的单元格不可编辑但可选,但单元格仍然可编辑.我该如何解决这个问题?
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class A extends JTable{
JFrame frame = new JFrame();
Object data[][] = {{"1","Jahanzeb"},{"2","Ahmed"},{"3","Shaikh"}};
String col[] = {"#","Names"};
DefaultTableModel tableModel = new DefaultTableModel(data, col);
JTable table = new JTable(tableModel);
JScrollPane scroll = new JScrollPane(table);
public static void main(String arg[]){
new A();
}
public A() {
table.addMouseListener(new Click());
table.setModel(tableModel);
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(scroll);
frame.add(table);
frame.setVisible(true);
}
@Override
public boolean isCellEditable(int row, int column){
return false;
}
class Click extends …Run Code Online (Sandbox Code Playgroud) 我有一个JAVA项目,并希望使用DefaultTableModel使我的JTable不可编辑.我知道一个解决方法,称为:
JTable table = new JTable(...){
public boolean isCellEditable(int row, int column){
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
喜欢说:我不喜欢这个.这不符合我学校的训练规则.
有没有办法做到这一点?也许有一个好方法.希望如此!
我有一个jTable日历,工作正常,我只是希望用户无法编辑任何东西.我该怎么做?
非常感谢!!
PS:我使用netbeans 6.9.