java - 带方形边框的 JCheckBox

标签 java swing checkbox jcheckbox

Mac OS 中默认的 JCheckBox 边框是圆形的,但我需要一个 正方形 作为复选框。
有没有办法在不使用 ImageIcon 的情况下完成此任务?
换句话说,我需要一些实现美观的方形复选框的 Java 类示例(例如 this )。

最佳答案

我知道你说“不使用 ImageIcon” - 但是,这是最简单的解决方案,不需要太多的修改,并且可以轻松快速地生成(未选择/选择)

Unselected Selected

public class ColorCheckBox extends JCheckBox {

    public ColorCheckBox(Color unselectedColor, Color selectedColor) {
        setSelectedIcon(icon(Color.MAGENTA));
        setIcon(icon(Color.WHITE));
    }

    protected Icon icon(Color filled) {
        BufferedImage img = new BufferedImage(25, 25, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = img.createGraphics();
        g2d.setColor(filled);
        g2d.fillRect(0, 0, 25, 25);
        g2d.dispose();
        return new ImageIcon(img);
    }

}

But I said ...

为什么每个人都那么执意不使用他们可用的最简单的解决方案。

在这种情况下,下一个最简单的解决方案可能是简单地重写 paintComponent 方法并在 UI 委托(delegate)正在绘制的内容上进行绘制...

public class ColorCheckBox extends JCheckBox {

    private Color unselectedColor;
    private Color selectedColor;

    public ColorCheckBox(Color unselectedColor, Color selectedColor) {
        this.unselectedColor = unselectedColor;
        this.selectedColor = selectedColor;
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g); 
        if (isSelected()) {
            g.setColor(selectedColor);
        } else {
            g.setColor(unselectedColor);
        }
        g.fillRect(0, 0, getWidth(), getHeight());
    }

}

关于java - 带方形边框的 JCheckBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606215/

相关文章:

java - 使用 JdbcTemplate 进行动态查询

java - 二叉搜索树在现实世界中的应用

java - 为什么我在 ubuntu 上安装的 java 上找不到 javaw?

Java Event-Dispatching Thread 解释

java - 使用 JLabel 绘制 JPanel 渐变背景时出现问题

java - Java 中的合法注释内容导致错误

java - JavaFx Gui 与 Swing 的性能对比

c++ - 在基于 ATL 的 C++ 对话框中向复选框添加工具提示

javascript - 仅显示类名等于多个选中的复选框值 jQuery 的项目

javascript - 使用 jQuery 创建 "check all"/"select all"复选框?