JAVA 如何设置JTable的渲染器以及是否可编辑属性和其上的事件监听机制
2014-07-30 16:05
776 查看
今天刚学到的,记录下,以后看的方便
1.设置JTable的渲染器:
DefaultTableModel dtm=new DefaultTableModel(s_data,s_head);
jt=new JTable(dtm);
jt.setDefaultRenderer(Object.class, new TableViewRenderer()); //设置其渲染器
//以下渲染器实现功能:单元格内文本过长时会被Wrapped(顿时有点不太清楚这个单词该怎么解释)
class TableViewRenderer extends JTextArea implements TableCellRenderer{
public TableViewRenderer(){
setLineWrap(true);
}
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
setText(value==null?"":value.toString());
return this;
}
}
2.设置JTable的 编辑属性和监听机制
默认情况是所有行和所有列都可编辑。
//下面实现第2行2列的单元格可编辑,其他单元格则不可编辑
JTable jt=new JTable(new DefaultTableModel(v_data,v_head)){
public boolean isCellEditable(int row,int column){
if(row == 2 && column == 2){
return true;
}
else{
return false;
}
}
});
监听机制实现:
TableChangeListener tl=new TableChangeListener(stmt);
jt.getSelectionModel().addListSelectionListener(tl); //为行设置监听器,当行值发生变化时采取的动作,具体方法名由接口已经定义,具体细节自己实现
jt.getColumnModel().addColumnModelListener(tl);
//为列设置监听器,当列值发生变化时采取的动作
jt.getModel().addTableModelListener(tl); //更细节的监听器,可以具体对某行某列变化值进行测定
class TableChangeListener implements ListSelectionListener,TableModelListener,TableColumnModelListener{
int rowNum,colNum;
Statement statement;
public TableChangeListener(Statement statement){
this.statement=statement;
}
public void valueChanged(ListSelectionEvent e){
rowNum=jt.getSelectedRow();
}
public void columnSelectionChanged(ListSelectionEvent e){
colNum=jt.getSelectedColumn();
}
public void tableChanged(TableModelEvent e){
if(colNum==**&&rowNum==**){
//do something
}
}
}
1.设置JTable的渲染器:
DefaultTableModel dtm=new DefaultTableModel(s_data,s_head);
jt=new JTable(dtm);
jt.setDefaultRenderer(Object.class, new TableViewRenderer()); //设置其渲染器
//以下渲染器实现功能:单元格内文本过长时会被Wrapped(顿时有点不太清楚这个单词该怎么解释)
class TableViewRenderer extends JTextArea implements TableCellRenderer{
public TableViewRenderer(){
setLineWrap(true);
}
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
setText(value==null?"":value.toString());
return this;
}
}
2.设置JTable的 编辑属性和监听机制
默认情况是所有行和所有列都可编辑。
//下面实现第2行2列的单元格可编辑,其他单元格则不可编辑
JTable jt=new JTable(new DefaultTableModel(v_data,v_head)){
public boolean isCellEditable(int row,int column){
if(row == 2 && column == 2){
return true;
}
else{
return false;
}
}
});
监听机制实现:
TableChangeListener tl=new TableChangeListener(stmt);
jt.getSelectionModel().addListSelectionListener(tl); //为行设置监听器,当行值发生变化时采取的动作,具体方法名由接口已经定义,具体细节自己实现
jt.getColumnModel().addColumnModelListener(tl);
//为列设置监听器,当列值发生变化时采取的动作
jt.getModel().addTableModelListener(tl); //更细节的监听器,可以具体对某行某列变化值进行测定
class TableChangeListener implements ListSelectionListener,TableModelListener,TableColumnModelListener{
int rowNum,colNum;
Statement statement;
public TableChangeListener(Statement statement){
this.statement=statement;
}
public void valueChanged(ListSelectionEvent e){
rowNum=jt.getSelectedRow();
}
public void columnSelectionChanged(ListSelectionEvent e){
colNum=jt.getSelectedColumn();
}
public void tableChanged(TableModelEvent e){
if(colNum==**&&rowNum==**){
//do something
}
}
}
相关文章推荐
- gridview如何改变行显示的内容以及设置单元格的是否允许编辑
- gridview如何改变行显示的内容以及设置单元格的是否允许编辑
- (十三)Core Java GUI(图形化界面小程序开发,事件监听机制流程,以及可运行jar包的配置实现,) (109)
- JAVA JTable 关于表格初始化设置、表格事件监听及数据更新问题
- Java 语言是否应增加闭包以及如何添加?
- Flex中如何通过设置editable属性控制NumericStepper控件可编辑/不可编辑状态的例子
- java事件处理机制 自定义事件 再谈java事件监听机制(
- android网络监听事件机制(kernel, c++, java)
- java例程练习(事件监听机制)
- Android 在Java代码中设置style属性--使用代码创建ProgressBar对象(反射机制)
- 再谈java事件监听机制
- 再谈java事件监听机制
- 如何判断一个类是否支持某属性和方法以及如何判断IOS的版本
- 再谈java事件监听机制
- java事件监听机制
- Java 语言是否应增加闭包以及如何添加?
- Flex中如何通过设置editable属性创建一个可编辑的DataGrid控件的例子
- 如何创建自定义winForm控件 以及添加事件属性
- Flex中如何利用dataDescriptor和labelFunction属性以及hasChildren()和getChildren()函数设置Tree中包含子节点个数的例子
- AlertDialog中使用自定义View,其中的Button如何设置点击事件监听