栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JTable禁用单元格中的复选框

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JTable禁用单元格中的复选框

如“ 概念:编辑器和渲染器 ”中所述,“通常使用单个单元格渲染器来绘制包含相同类型数据的所有单元格。” 您需要维护表模型中的enabled状态。

附录:作为一个具体示例,此示例中的数据模型是一组简单的Date实例。getTableCellRendererComponent()如下所示覆盖将导致禁用奇数天。在这种情况下,奇数是Date值本身固有的属性,但是可以针对所有相关属性查询模型。

禁用图片

@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int col) {
Calendar calendar = Calendar.getInstance();
calendar.setTime((Date) value);
Component c = super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, col);
c.setEnabled(calendar.get(Calendar.DAY_OF_MONTH) % 2 == 0);
return c;
}
附录:在上面的示例中,DateRenderer之所以会调用,是因为TableModel返回值类型令牌 Date.class已被设置为默认值。


table.setDefaultRenderer(Date.class, new DateRenderer());
可以通过覆盖如下所示的方法获得相同的外观prepareRenderer(),但是该方法将为所有单元调用,而与类无关。因此,prepareRenderer()非常适合影响整个行,如表行渲染中所示。

private final JTable table = new JTable(model) {

@Overridepublic Component prepareRenderer(TableCellRenderer renderer, int row, int col) {    Component c = super.prepareRenderer(renderer, row, col);    if (col == DATE_COL) {        Calendar calendar = Calendar.getInstance();        calendar.setTime((Date) model.getValueAt(row, col));        c.setEnabled(calendar.get(Calendar.DAY_OF_MONTH) % 2 == 0);    }    return c;}

};



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432023.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号