jTable中有String,Integer,Long数据类型,要求String型的单元只能输入字母和数字,3种类型均限制长度。
现在我有JTextField已经实现了String类型的验证,不过用table.getColumnModel().getColumn(t).setCellEditor(new DefaultCellEditor(c));之后还是不能验证jTable的(c是实现了验证功能的JTextField)
现在我有JTextField已经实现了String类型的验证,不过用table.getColumnModel().getColumn(t).setCellEditor(new DefaultCellEditor(c));之后还是不能验证jTable的(c是实现了验证功能的JTextField)
解决方案 »
- I/O问题,求助……
- java怎么检查XML配置文件的语法<></>?
- 如何查找出在字符串"7@11@12@13@"中的但不在字符串"8@13@15@16@"中的数字7,11和12啊。。。
- java.lang.Throwable: Socket is closed
- 请教关于进程的问题
- JAVA中常用的那些类,如java.lang,javax.swing都存放在哪个目录?我怎么找不到阿。
- 我想学习JAVA。。。我想知道我要准备些什么?帮帮忙啊~~~~
- 在java 2d中如何裁减一个图像?
- 用java可以实现浏览器的功能吗?需要用到那些class呢?
- 一个java初学者的问题
- Unix下weblogic里用JFreeChart
- 如何给JTextFiled固定宽度?
你的TableModel继承AbstractTableModel,然后重写下面的方法private Vector content = null; // 存放JTable中的数据public boolean isCellEditable(int rowIndex, int columnIndex){
return true; // 所有数据均可修改
}public void setValueAt(Object value, int row, int col){
//使修改的内容生效,在这里先判断value是否为你需要的合法数据,合法则修改,否则不理它就可以了
}写过一个例子,你可以参考下:
http://community.csdn.net/Expert/topic/4869/4869338.xml?temp=.6329462
JTextField tblfld;
String classType;
int tblLength;
public ValueTableCellEditor(String tblName,String classType){
tblfld = new JTextField();
this.classType = classType;
try{
tblLength = Integer.parseInt(getPropertieA(tblName.concat(COMP_ATTR_MAX)));
}catch(Exception e){
}
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if(classType.equals("String")){
tblfld.setDocument(new TextDocument(tblLength));
return tblfld;
}
else{
tblfld.setDocument(new TextDocument(tblLength));
return tblfld;
}
}
public Object getCellEditorValue(){
return null;
}
}
class TextDocument extends PlainDocument
{
int a;
public TextDocument(int t){
a = t;
}
public void insertString(int offs,String str,
AttributeSet a)throws BadLocationException{
if(this.getLength() == this.a)
str = "";
super.insertString(offs,str,a);
}
}
Class a = table.getModel().getColumnClass(t);
ValueTableCellEditor cellEdit = new ValueTableCellEditor(compNames.get(i).toString(),a.toString());
table.getColumnModel().getColumn(t).setCellEditor(cellEdit);
}