首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有可能将JCheckBoxes放入不包含布尔值的JTable单元中?

有可能将JCheckBoxes放入不包含布尔值的JTable单元中。在JTable中,每个单元格都可以包含任何类型的组件,包括JCheckBox。要实现这个功能,可以通过自定义TableCellRenderer和TableCellEditor来实现。

首先,创建一个自定义的TableCellRenderer,用于渲染JCheckBox。在渲染器中,可以根据需要设置JCheckBox的状态,并返回该组件。

代码语言:txt
复制
import javax.swing.*;
import javax.swing.table.TableCellRenderer;
import java.awt.*;

public class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
    public CheckBoxRenderer() {
        setHorizontalAlignment(JCheckBox.CENTER);
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        setSelected((Boolean) value);
        return this;
    }
}

然后,创建一个自定义的TableCellEditor,用于编辑JCheckBox。在编辑器中,可以根据需要获取和设置JCheckBox的状态,并返回该组件。

代码语言:txt
复制
import javax.swing.*;
import javax.swing.table.TableCellEditor;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CheckBoxEditor extends DefaultCellEditor implements ActionListener {
    private JCheckBox checkBox;

    public CheckBoxEditor() {
        super(new JCheckBox());
        checkBox = (JCheckBox) getComponent();
        checkBox.setHorizontalAlignment(JCheckBox.CENTER);
        checkBox.addActionListener(this);
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        checkBox.setSelected((Boolean) value);
        return checkBox;
    }

    @Override
    public Object getCellEditorValue() {
        return checkBox.isSelected();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        fireEditingStopped();
    }
}

最后,在创建JTable时,将自定义的渲染器和编辑器应用到需要显示JCheckBox的列中。

代码语言:txt
复制
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class CheckBoxTableExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("CheckBoxTableExample");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        DefaultTableModel model = new DefaultTableModel(new Object[][]{
                {"Item 1", true},
                {"Item 2", false},
                {"Item 3", true},
                {"Item 4", false}
        }, new Object[]{"Name", "Selected"});

        JTable table = new JTable(model);
        TableColumn column = table.getColumnModel().getColumn(1);
        column.setCellRenderer(new CheckBoxRenderer());
        column.setCellEditor(new CheckBoxEditor());

        JScrollPane scrollPane = new JScrollPane(table);
        frame.add(scrollPane);

        frame.pack();
        frame.setVisible(true);
    }
}

这样,就可以将JCheckBox放入不包含布尔值的JTable单元中了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java swing 添加 jcheckbox复选框

②然后我们需要将表格对象创建出来并放入该容器控件,(如JDK_API_1_6_zh_CN.CHM)创建表格控件。...值得一提是在这七个构造方法,设计器(如果您使用了MyEclipse)使用JTable(TableModel dm)这个版本。...而一般情况使用JTable(Vector rowData,Vector columnNames)       在Java方法,如果参数需要传递接口,可以在调用方法时传递一个(匿名)对象,该对象是一个不具名实例...在详细说明之前先解释一下JTable显示原理:       首先是数据来源,您使用JTable构造方法,大部分重载参数即包含了数据,比如JTable(VectorrowData, Vector columnNames...)Vector保存数据(Vector相当于数组)。

3.3K00

.NET 开箱即用Excel工具包已发布

功能 可设置列属性,包括样式,公式,注解; 可配置规则独立设置单元格样式; 可配置规则对Excel校验,包括数值校验和公式校验,内置Lambda表达式和正则表达式两个预设校验器; 扩展接口封装和组件...高级类型是继承自IAdvancedType类,往往是一个泛型,它类型参数为常规类型,对应实际单元格值。 高级类型有:"包含注解","包含样式","包含公式","全包含"类型。...1、ICommentedType: 包含单元格注解; 2、IStyledType: 包含单元格样式; 3、IFormulatedType: 包含单元格公式对象; 4、IFullAdvancedType...,等效于ExcelEntity无此属性 4、Format 指定单元格格式,格式约定请参考Excel 自定义单元格格式 5、Type: 单元格类型, Exportable指定Type类型为 值 含义...,自定义实现,也可使用内置样式映射器。

24030

java面试大总结(3)

Struts有如下主要功能: 一.包含一个controller servlet,能将用户请求发送到相应Action对象。...UDDI 目的是为电子商务建立标准;UDDI是一套基于Web、分布式、为Web Service提供、信息注册中心实现标准规范,同时也包含一组使企业能将自身提供Web Service注册,以使别的企业能够发现访问协议实现标准...11、MVC结构在Jtable怎样实现,这种结构有什么好处?...答、在Jtable不存储它单元数据,它所有实例把它们单元值交给实现了TableModel接口对象来维护和管理,所以在MVC结构Jtable表格主要体现了一个V作用,其表格将数据变化体现出来...25、类变量初始化 答:在Java类变量在局部中一定要初始化,因为局部变量会覆盖全局变量,否则会报错:变量未初始化。全局变量则可以初始化,而到具体内部方法或其他类成员初始化。

49020

如何避免自己写代码成为别人眼中一坨屎

恰当信息; 废弃注释; 冗余注释; 糟糕注释; 注释掉代码; 唯一真正好注释是你想办法不去写注释: 不要有循规式注释,比如setter/getter注释; 不要添加日志式注释,比如修改时间等信息...(git可以做事情); 注释一定是表达代码之外东西,代码可以包含内容,注释中一定不要出现; 如果有必要注释,请注释意图(why),而不要去注释实现(how),大家都会看代码; 适当添加警示注释;...,尽可能少设计临界区; 六、单元测试 不要怕单元测试方法名字太长或者繁琐,测试函数名称就像注释; 不要追求太高测试覆盖率,测试代码前面90%通常比后面10%花时间少; 使用最简单并且能够完整运用代码测试输入...; FIRST原则: 快速 Fast; 独立 Independent 测试应该相互独立; 重复 Repeatable 测试应当在任何环境重复通过; 自足验证 Self-Validating  测试应该有布尔值输出...; 若某个函数调用了另外一个,应该把他们放在一起,而且调用者应该放在被调用者上面; 自上向下展示函数调用依赖顺序; 应该把解释条件意图函数抽离出来,尽可能将条件表达为肯定形式; 不要继承常量,比如接口中定义常量

7232118

如何避免自己写代码成为别人眼中一坨屎!

恰当信息; 废弃注释; 冗余注释; 糟糕注释; 注释掉代码; 唯一真正好注释是你想办法不去写注释: 不要有循规式注释,比如setter/getter注释; 不要添加日志式注释,比如修改时间等信息...(git可以做事情); 注释一定是表达代码之外东西,代码可以包含内容,注释中一定不要出现; 如果有必要注释,请注释意图(why),而不要去注释实现(how),大家都会看代码; 适当添加警示注释;...,尽可能少设计临界区; 六、单元测试 不要怕单元测试方法名字太长或者繁琐,测试函数名称就像注释; 不要追求太高测试覆盖率,测试代码前面90%通常比后面10%花时间少; 使用最简单并且能够完整运用代码测试输入...; FIRST原则: 快速 Fast; 独立 Independent 测试应该相互独立; 重复 Repeatable 测试应当在任何环境重复通过; 自足验证 Self-Validating...: 变量声明应该靠近其使用位置; 若某个函数调用了另外一个,应该把他们放在一起,而且调用者应该放在被调用者上面; 自上向下展示函数调用依赖顺序; 应该把解释条件意图函数抽离出来,尽可能将条件表达为肯定形式

52520

如何避免自己写代码成为别人眼中一坨屎!

恰当信息; 废弃注释; 冗余注释; 糟糕注释; 注释掉代码; 唯一真正好注释是你想办法不去写注释: 不要有循规式注释,比如setter/getter注释; 不要添加日志式注释,比如修改时间等信息...(git可以做事情); 注释一定是表达代码之外东西,代码可以包含内容,注释中一定不要出现; 如果有必要注释,请注释意图(why),而不要去注释实现(how),大家都会看代码; 适当添加警示注释;...,尽可能少设计临界区; 六、单元测试 不要怕单元测试方法名字太长或者繁琐,测试函数名称就像注释; 不要追求太高测试覆盖率,测试代码前面90%通常比后面10%花时间少; 使用最简单并且能够完整运用代码测试输入...; FIRST原则: 快速 Fast; 独立 Independent 测试应该相互独立; 重复 Repeatable 测试应当在任何环境重复通过; 自足验证 Self-Validating...: 变量声明应该靠近其使用位置; 若某个函数调用了另外一个,应该把他们放在一起,而且调用者应该放在被调用者上面; 自上向下展示函数调用依赖顺序; 应该把解释条件意图函数抽离出来,尽可能将条件表达为肯定形式

62870

Excel公式技巧26: 给统计函数(GROWTH,LINEST,LOGEST,TREND)提供合法参数值

因此,它们可以有效地缩小操作范围,该范围内仅包含布尔值(或数字),这样使我们可以在函数包含条件语句(通常使用IF函数),从而限制公式构造最终要处理值。 例如下图1所示工作表: ?...因此,如果将之前公式AVERAGE替换为LINEST,即: =LINEST(IF(A2:A11="X",B2:B11)) 解析为: =LINEST({FALSE;58;FALSE;23;FALSE...解决方案是确保我们传递数组仅包含满足条件值,而包含其他值。...)) 其中: MODE.MULT(IF(A2:A11={"X","X"},ROW(A2:A11))) 因为MODE.MULT函数特性要求传递给它数组每个值至少出现2次,所以公式包含了两个“X”,...例如,要从区域A2:A11排除空单元格,可以采用: {"",""} 替换: ={"X","X"} 现在,如果在公式采用硬编码“X”,而是根据单元格D1值来动态计算,如下图2所示。 ?

1.5K32

如何避免自己写代码成为别人眼中一坨屎!

恰当信息; 废弃注释; 冗余注释; 糟糕注释; 注释掉代码; 唯一真正好注释是你想办法不去写注释: 不要有循规式注释,比如setter/getter注释; 不要添加日志式注释,比如修改时间等信息...(git可以做事情); 注释一定是表达代码之外东西,代码可以包含内容,注释中一定不要出现; 如果有必要注释,请注释意图(why),而不要去注释实现(how),大家都会看代码; 适当添加警示注释;...,尽可能少设计临界区; 六、单元测试 不要怕单元测试方法名字太长或者繁琐,测试函数名称就像注释; 不要追求太高测试覆盖率,测试代码前面90%通常比后面10%花时间少; 使用最简单并且能够完整运用代码测试输入...; FIRST原则: 快速 Fast; 独立 Independent 测试应该相互独立; 重复 Repeatable 测试应当在任何环境重复通过; 自足验证 Self-Validating...: 变量声明应该靠近其使用位置; 若某个函数调用了另外一个,应该把他们放在一起,而且调用者应该放在被调用者上面; 自上向下展示函数调用依赖顺序; 应该把解释条件意图函数抽离出来,尽可能将条件表达为肯定形式

71210

【动态规划】LeetCode 题解:416-分割等和子集

大家好,我是前端西瓜哥,有三个月没做算法题了,这次就来做一道动态规划难度较低题。 题目 给你一个只包含正整数非空数组 nums。...其实这就等价于,数组元素是否存在一个子数组,它和为原数组总和除以 2,这时它就变成了经典 0-1 背包问题,你需要决策每个阶段是否放入特定数组元素,直到刚好为总和除以 2。...0-1 背包问题,有在书包有最大承重情况下,求放入物体最大重量。或是提升到二维,求放入物体最大价值。 这道题属于前者。...(sum % 2 === 1) return false; // 奇数,无法分成两份 const half = sum / 2; // 提前判断特殊情况,避免后面无谓初始化,省略 if...这里还用二维数组解法,是因为它还是比较经典,有普适性,适合用于讲解。一些题目中,甚至能将优化为几个变量,比如跳楼梯。

25510

十大至简规则,用Jupyter Notebook写代码应该这样来

那么,尝试让 notebook 每个单元格执行一个有意义分析步骤,并且该步骤可以根据单元代码或周围 markdown 描述很容易地理解。...在代码注释中放入低级文档。使用描述性 markdown header 将 notebook 分区,使其可以轻松导航和添加目录。...始终在这些依赖项创建环境工作,以确保添加未记录依赖项。 在 notebook ,你可以使用 notebook 扩展(如 watermark)显式打印依赖项。...列出 notebook 关键依赖项版本(最好列在最下方),如果 notebook 与环境隔离使用,那么这将保证 notebook 仍然包含关键信息,从而帮助读者复制结果。...此外,由于 notebook 包含代码,代码不可避免会有 bug,因此确定 bug 引入与修复时间(及其可能影响分析)是科学计算一项关键能力。

64340

十大至简规则,用Jupyter Notebook写代码应该这样来

那么,尝试让 notebook 每个单元格执行一个有意义分析步骤,并且该步骤可以根据单元代码或周围 markdown 描述很容易地理解。...在代码注释中放入低级文档。使用描述性 markdown header 将 notebook 分区,使其可以轻松导航和添加目录。...始终在这些依赖项创建环境工作,以确保添加未记录依赖项。 在 notebook ,你可以使用 notebook 扩展(如 watermark)显式打印依赖项。...列出 notebook 关键依赖项版本(最好列在最下方),如果 notebook 与环境隔离使用,那么这将保证 notebook 仍然包含关键信息,从而帮助读者复制结果。...此外,由于 notebook 包含代码,代码不可避免会有 bug,因此确定 bug 引入与修复时间(及其可能影响分析)是科学计算一项关键能力。

1.1K20

代码优化技巧·代码编写好习惯·代码规范

,其它代码谨慎使用注释 典型烂注释 恰当信息 废弃注释 冗余注释 糟糕注释 注释掉代码 唯一真正好注释是你想办法不去写注释 不要有循规式注释,比如setter/getter注释...不要怕单元测试方法名字太长或者繁琐,测试函数名称就像注释 不要追求太高测试覆盖率,测试代码前面90%通常比后面10%花时间少 使用最简单并且能够完整运用代码测试输入 给测试函数取一个完整性描述性名字...Repeatable 测试应当在任何环境重复通过 自足验证 Self-Validating 测试应该有布尔值输出 及时 Timely 最好方式是TDD 代码结构 代码行长度控制在100...自上向下展示函数调用依赖顺序 应该把解释条件意图函数抽离出来,尽可能将条件表达为肯定形式 不要继承常量,比如接口中定义常量,不要使用继承欺骗编程语言作用范围规则 模块不应了解它所操作对象内部情况...以上规则按重要程度排列 无论是设计系统或者单独模块,别忘了使用大概工作最简单方案 整洁代码只提供一种而非多种做一件事途径,他只有尽量少依赖。

1.1K10

测试代码坏味道

测试反应开发人员水平 与编写业务代码相比,测试代码才能真正体现开发人员水平。你可以用测试来判断开发人员水平: 有没有为自己代码编写测试? 测试中有没有断言? 测试中有没有包含有效断言?...没有断言测试意味着原本代码写得又臭又长;测试包含无效断言表明开发人员在划水;测试方法长度过长,表明原有的方法可以进一步抽象…… 顺便一提,我们推荐 TDD(测试驱动开发),它并非是银弹。...测试代码坏味道,是指单元测试代码不良编程实践(例如,测试用例组织方式,实现方式以及彼此之间交互方式),它们表明测试源代码潜在设计问题。 如 Robert C....重复(Repeatable),测试应当可在任何环境通过。 自足验证(Self-Validating),测试应该有布尔值输出。 及时(Timely),测试应该及时编写。...命名在测试也是一大难题,我们如可以采用 Roy Osherove(《单元测试艺术》作者) 推荐 UnitOfWork_StateUnderTest_ExpectedBehavior 命名法则。

1.5K50

Android图片加载库内存缓存策略分析

每当Universal ImageLoader从网络或文件获取图片数据后,会将解码后Bitmap放入MemoryCache。...**这里就是ImageLoader内存缓存缺陷关键 ** : 至此,这个被我们remove掉Bitmap,将离开我们控制范围。我们既不能将它recycle掉,也不能将它复用。...Glide先从Memory后从Active寻找,有没有想要资源,如果找到就可以直接显示。在没有资源情况下,Glide会开始加载解码任务。...在这个过程,我们没有将图片放入memory。但此时图片不会被回收。因为ImageView还显示着这个图片。 那么,图片是何时被放入memory呢?...通过这种方式,Glide确保了memory资源一定没有被展示,因此可以对这些资源进行回收或复用等灵活处理,从而减少了内存占用,及时回收了复用内存资源。

82520

python变量、运算符

变量 变量就是可以重复使用一个量,或者叫一个代号 变量命名规则 - 变量命名可以包含数字,大小写字母,下划线或者更多,但是我们推荐除了前三种内容之外符号 - 数字不可以打头 - 4man...,5for是不可以 - man4,for5是可以 - 一般在python,以下划线开头内容具有特殊含义,建议使用 - 比如\_age, \_name, 理论可以,但强烈推荐,...age age = 18 print(age) print(18) # 给age1, age2, age3 放入同样一个内容或值 age1 = age2 = age3 = 18 print...4j print(a) 4j 布尔值 布尔值就是用来表示真假值 只有两个值:Ture/False 在python布尔值可以当数字使用 - 布尔值如果当数字使用,Ture=1,False=0 -...,放进了固定内存,不因你每次运行而变化。

1.3K87

当心那些有歧义命名

包含什么数据呢?...为布尔值取名 当为布尔值变量命名或者函数返回布尔值时候,要特别注意真和假所表达出来真实意思,这里就有一个很危险例子: bool read_password = true; 这句代码意思取决于当时怎么阅读...如果需要明确返回值是布尔值,一个更好名字是 HasSpaceLeft()。 还有,尽量避免使用反义短句来命名。...避免下面的例子java代码段做法: public class StatisticsCollector {     public void addSample(double x) { ... }    ...从技术角度讲,这段代码没有问题,也能通过所有的单元测试。但是当调用ShrintList()并传入一个包含上亿数量级list时,它可能将 耗费数小时时间。

1.2K60

java遍历数组各种方法_遍历数组常用方法「建议收藏」

,元素作为参数传递给该函数 1 var arr = [“first”,”second”,”third”,”fourth”,3,5,8];2 //element 表示arr单元项,index 表示arr...//输出结果 7 first/0 8 second/1 9 fourth/3 10 3/4 11 5/5 12 8/6 3.map 遍历数组,并通过callback对数组元素进行操作,并将所有操作结果放入数组并返回该数组...callback上被返回true时就返回true(注意:要求每一个单元项都返回true时才为true) every()与filter()区别是:后者会返回所有符合过滤条件元素;前者会判断是不是数组所有元素都符合条件...,并且返回布尔值 1 var arr = [“first”,”second”,’third’ ,”fourth”,3,5,8];2 var bol = arr.every(function(element...当前元素索引 arr:可选.当前元素所属数组对象 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。

83530

编写更好 Java 单元测试 7 个技巧

如前所述,单元测试帮助开发人员确定代码是否正常工作。在这篇博文中,我将提供在Java单元测试有用提示。 1.使用框架来用于单元测试 Java提供了若干用于单元测试框架。...3.测量代码覆盖率 代码覆盖率衡量(以百分比表示)了在运行单元测试时执行代码量。通常,高覆盖率代码包含未检测到错误几率要低,因为其更多源代码在测试过程中被执行。...下面的concat方法接受布尔值作为输入,并且仅当布尔值为true时附加传递两个字符串: ? 以下是上述方法测试用例: ? 在这种情况下,执行测试值为true。当测试执行时,它将通过。...当代码覆盖率工具运行时,它将显示100%代码覆盖率,因为concat方法所有代码都被执行。但是,如果测试执行值为false,则将抛出NullPointerException。...所以100%代码覆盖率并不真正表明测试覆盖了所有场景,也不能说明测试良好。 4.尽可能将测试数据外部化 在JUnit4之前,测试用例要运行数据必须硬编码到测试用例

2.6K20

PHP中有关正则表达式函数集锦

如果提供了$matches,则将匹配结果放入。$matches[0]将包含与整个模式匹配文本,$matches[1]将包含第一个捕获与括号模式单元所匹配内容,以此类推。...eregi()是ereg()函数忽略大小写版 本。二者与preg_match功能类似,但函数返回是一个布尔值,表明匹配成功与否。...如果使用了第三个参数,将把所有可能匹配结果放入。本函数返回整个模 式匹配次数(可能为0),如果出错返回False。      ...当$pattern包含模式单元(或子模式)时,$replacement形如“\1”或“$1”位置将依次被这些子 模式所匹配内容替换。而“\0”或“$0”是指整个匹配字符串内容。...如 果设定了$limit,则返回数组最多包含$limit个单元。而其中最后一个单元包含了$string剩余所有部分。spliti是split 忽略大小版本。

1.1K50

H2 数据库

文件大小 ODBC 驱动程序(语言无关驱动,JDBC 只与 Java 关联) 应用场景: 快速构建小型应用(数据库和内嵌式项目一起打包,方便存储少量结构化数据) 单元测试使用(快速构建数据库,内存模式数据用完清空还原...=-1,这样只要 JVM 还处于活动状态数据就不会丢失,这样也会导致内存泄漏 本地文件存储:一般包含两个文件 test.mv.db(所属库所有表事务日志、索引、数据)、test.trace.db(跟踪文件...,包含跟踪信息)。...,但仍有一些差异(MySQL 文本默认区分大小写,而 H2 是区分大小写),H2 模拟特定数据库行为,但这种模仿是有限,普通情况下正常使用(下面举例 MySQL) 兼容 MySQL : 在数据库...部分支持 REPLACE INTO 允许 DISTINCT 查询 ORDER BY 子句中不相关表达式 支持 LIMIT / OFFSET 子句 可以使用 AUTO_INCREMENT 子句 允许数值和布尔值之间不安全比较运算符

1.1K30
领券