JAVA 如何设置JTable的渲染器以及是否可编辑属性和其上的事件监听机制

今天刚学到的,记录下,以后看的方便

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

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值