首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIManager和JCheckBox图标

UIManager和JCheckBox图标
EN

Stack Overflow用户
提问于 2016-04-09 01:18:17
回答 2查看 1K关注 0票数 0

我的图形用户界面有一个显示为JCheckBox的boolean类型的JTable和列。金属颜色不适合我的图形用户界面,所以我使用了下面的代码:

代码语言:javascript
复制
ImageIcon icon = new ImageIcon(MyGUI.class.getResource("resources/checkbox1.png"));
UIManager.put("CheckBox.icon", icon1);

我得到了我想要的取消选中的复选框,但在UIManager中没有我可以更改以自定义选定的JCheckBox的键。有没有办法全局更改选定的JCheckBox视图?附注:我尝试了这两个和不透明和透明背景,结果是一样的-复选框是不起作用的。

EN

回答 2

Stack Overflow用户

发布于 2016-04-09 02:20:16

覆盖IconpaintIcon方法,以便在选中或未选中图标时绘制不同的图标。

This is a stack overflow answer demos how to implement a tri-states JCheckBox

票数 1
EN

Stack Overflow用户

发布于 2016-04-09 02:31:37

我在互联网上找到了解决方案,并为自己改变了它。

代码语言:javascript
复制
class CheckBoxIcon implements Icon {
    public void paintIcon(Component component, Graphics g, int x, int y) {
        AbstractButton abstractButton = (AbstractButton)component;
        ButtonModel buttonModel = abstractButton.getModel();

        if(buttonModel.isSelected()) 
            g.drawImage(createImage("resources/checkbox2.png"), x, y, component);
        else
            g.drawImage(createImage("resources/checkbox1.png"), x, y, component);
    }
    public int getIconWidth() {
        return 13;
    }
    public int getIconHeight() {
        return 13;
    }

    protected Image createImage(String path) {
        URL imageURL = CheckBoxIcon.class.getResource(path);
        Image icn = null;

        if (imageURL == null) {
            if(null==icn){
                //System.out.println("path: "+path);
                icn = new ImageIcon (MyGUI.class.getResource(path)).getImage();
                if(null!=icn)
                    return icn;
                else{ 
                    System.err.println("Resource not found: " + path);
                    return null;
                }
            }
            return null;
        } else {
            return (new ImageIcon(imageURL)).getImage();
        }
    }
}

然后在代码中使用这一行。

代码语言:javascript
复制
UIManager.put("CheckBox.icon", new CheckBoxIcon());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36505597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档