JCheckBox带方形边框

时间:2017-12-02 09:01:06

标签: java swing checkbox jcheckbox

Mac OS中的默认JCheckBox边框已四舍五入,但我需要正方形作为复选框。
有没有办法完成此任务而不使用ImageIcon
换句话说,我需要一些Java类的例子来实现好看的方形复选框(类似this)。

1 个答案:

答案 0 :(得分:1)

我知道你说“没有使用ImageIcon” - 但是,这是最简单的解决方案,不需要大量的捣乱,可以轻松快速轻松地生成(未选中/选中)< / p>

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);
    }

}
  

但我说......

为什么每个人都如此倾向于不使用他们可用的最简单的解决方案。

在这种情况下,下一个最简单的解决方案可能是简单地覆盖paintComponent方法并绘制UI委托正在绘制的内容......

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());
    }

}