您的位置:首页 > 编程语言 > Java开发

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

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: