
JTable 工作过程如下:
当一个表格显示之前,JTable 会询问每个单元格,getCellRender().getTableCellRendererComponent() 得到一个 Swing 组件后,就用它来在指定单元格显示出来。
当某个单元格即将获得焦点,比如单击或键盘tab 移动,JTable 会询问是否目标单元格允许编辑,如果允许就会询问 getCellEditor().getTableCellEditorComponent() 得到一个编辑器,通常,默认的编辑器是一个 JTextField 类型的,只要我们给一个 JButton 类型的就可以了。
table.setCellEditor(new TableCellEditor() {
private JButton editor = new JButton()
private JTextField dephaut = new JTextField()
{//相当于构造函数。
editor.addActionListener() {
/* 业务方法 */
}
}
/* 此处省略 N 多待实现方法*/
public Component getTableCellEditorComponent(
JTable table,
Object value,
boolean isSelected,
int row,
int column) {
if (column == 3) {
return this.editor
} else {
return this.dephaut
}
}
就是JTable中,加入JButton对吧。那个简单。写一个类继承与JButton并实现javax.swing.table.TableCellRenderer接口就行了。然后用JTable的getColumn(Object)获取列,再用setCellRenderer(TableCellRenderer cellRenderer)方法就可以添加进表格了。
附相关API:
javax.swing.JTable
public TableColumngetColumn(Object identifier)返回表中列的 TableColumn 对象,当使用 equals 进行比较时,表的标识符等于
identifier。
参数:identifier - 标识符对象
返回:与标识符相匹配的 TableColumn 对象
javax.swing.table.TableCellRenderer
public interface TableCellRenderer
此接口定义了要成为 JTable 中单元格渲染器的任意对象所需的方法。
getTableCellRendererComponentComponentgetTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column)返回用于绘制单元格的组件。此方法用于在绘制前适当地配置渲染器。
TableCellRenderer 还负责呈现表示该表当前 DnD 放置位置的单元格(如果有)。如果此呈现器负责呈现 DnD 放置位置,则它应该直接查询表以确定给定的行和列是否表示放置位置:
JTable.DropLocation dropLocation = table.getDropLocation()
if (dropLocation != null
&&!dropLocation.isInsertRow()
&&!dropLocation.isInsertColumn()
&&dropLocation.getRow() == row
&&dropLocation.getColumn() == column) {
// this cell represents the current drop location
// so render it specially, perhaps with a different color
}
在打印 *** 作期间,将调用此方法(isSelected 和 hasFocus 为
false)阻止选择和焦点在打印输出中出现。要根据是否打印表进行其他定制,检查 JComponent.isPaintingForPrint()
的返回值。
参数:table - 要求渲染器绘制的 JTable;可以为 nullvalue - 要呈现的单元格的值。由具体的渲染器解释和绘制该值。例如,如果 value 是字符串
"true",则它可呈现为字符串,或者也可呈现为已选中的复选框。null 是有效值
isSelected - 如果使用选中样式的高亮显示来呈现该单元格,则为 true;否则为 false
hasFocus - 如果为
true,则适当地呈现单元格。例如,在单元格上放入特殊的边框,如果可以编辑该单元格,则以彩色呈现它,用于指示正在进行编辑
row - 要绘制的单元格的行索引。绘制头时,row 值是 -1
column - 要绘制的单元格的列索引
javax.swing.table.TableColumn
public void setCellRenderer(TableCellRenderer cellRenderer)设置 JTable 用于绘制此列各值的 TableCellRenderer。
参数:cellRenderer - 新的 cellRenderer
String[] value={"小1","小2","小3","小4","小5",}//列表框有这几个数DefaultListModel<String>model=new DefaultListModel<>()//建立数据列表框模型for(String tmp:value) {model.addElement(tmp)}//向数据列表模型中添加元素JList<Sting>jl=new JList<>(value)//创建列表框 这里面已经有值了(也就是第二行字符串数组),我们的目的是再往里面添加或者删除model.addElement("添加元素")jl.setmodel(model)//最后两行就是把“添加元素”这四个字方进列表框内了,如果想通过按钮这个方法也是可行的欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)