我正在做一个在线的考试系统,基于局域网的,我想用一个Table来答题,就是显示两列,一列显示题目,另一列
用来答题,比如,选择题和判断题另一列添加的控件为单选框,而填空题,问答题就添加文本框,和文本域。
这样,对于Table的那一列来说,每行添加的控件就不一样了。现在不知道怎么添加。希望大大们能帮我下
我新建了一个model 继承AbstractTableModel,我现在是在model里面的getValueAt()方法里面将单选框之类的控件返回
,但是这样不能实现,它调用的是这个控件的toString()方法。
本人初用table,希望能帮帮俺啦急
用来答题,比如,选择题和判断题另一列添加的控件为单选框,而填空题,问答题就添加文本框,和文本域。
这样,对于Table的那一列来说,每行添加的控件就不一样了。现在不知道怎么添加。希望大大们能帮我下
我新建了一个model 继承AbstractTableModel,我现在是在model里面的getValueAt()方法里面将单选框之类的控件返回
,但是这样不能实现,它调用的是这个控件的toString()方法。
本人初用table,希望能帮帮俺啦急
是怎么实现的呢? 不太明白。
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public class TableModel extends DefaultTableModel {
JTable table = null;
public TableModel(JTable jtable){
super();
table = jtable;
} public boolean isCellEditable(int row, int column) {
boolean editable = super.isCellEditable(row, column);
if(editable)
{
TableCellEditor ce= null;
if(row类型=字符)
ce = new DefaultCellEditor(new JTextField());
else if(row类型=Boolean)
ce = new DefaultCellEditor(new JCheckBox());
.......//类推
table.setCellEditor(ce);
}
return editable;
}}
public class TableModel extends DefaultTableModel {
JTable table = null; public TableModel(JTable jtable) {
super();
table = jtable;
} public boolean isCellEditable(int row, int column) {
boolean editable = super.isCellEditable(row, column);
if (editable) {
if (column == 1) {
try {
TableCellEditor ce = null;
if(row类型=字符)
ce = new DefaultCellEditor(new JTextField());
else if(row类型=Boolean)
ce = new DefaultCellEditor(new JCheckBox());
.......//类推
table.getColumnModel().getColumn(1).setCellEditor(ce);
} catch (Exception e) {
e.printStackTrace();
//设置为不可编辑,或使用默认的编辑器
}
}
}
return editable;
}
}
继承DefaultCellEditor或实现TableCellEditor
重载这个方法
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if(row行是判断题)
{
editorComponent = new JCheckBox();
((JCheckBox)editorComponent).setSelected(Boolean.valueOf(value.toString()));
}else if(row行是文字)
{
editorComponent = new JTextField();
((JTextField)editorComponent).setText(value.toString());
}
return editorComponent;
}逻辑处理,颜色选中啥的就不仔细写了
isCellEditable(int row, int column) 方法就是根据我给的值来显示不同的控件对吧?我记得默认的boolean
就是显示的一个选择框。这个在建立table的时候怎么用呢? 初学啊,,不好意思 是新建一个table。然后新建这个
TableModel 类的对象么?方法2的话,也不太会用。。 能不能给个例子,就是怎么用的例子。 麻烦啦!!!
还有那个判断row行的类型的时候,这样判断行吗? table.getValueAt(row, column) instanceof String