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

来源:互联网 发布:ic卡制作软件 编辑:程序博客网 时间:2024/06/08 16:18

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

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
原创粉丝点击