我的图形用户界面有一个显示为JCheckBox的boolean类型的JTable和列。金属颜色不适合我的图形用户界面,所以我使用了下面的代码:
ImageIcon icon = new ImageIcon(MyGUI.class.getResource("resources/checkbox1.png"));
UIManager.put("CheckBox.icon", icon1);我得到了我想要的取消选中的复选框,但在UIManager中没有我可以更改以自定义选定的JCheckBox的键。有没有办法全局更改选定的JCheckBox视图?附注:我尝试了这两个和不透明和透明背景,结果是一样的-复选框是不起作用的。
发布于 2016-04-09 02:20:16
覆盖Icon的paintIcon方法,以便在选中或未选中图标时绘制不同的图标。
This is a stack overflow answer demos how to implement a tri-states JCheckBox
发布于 2016-04-09 02:31:37
我在互联网上找到了解决方案,并为自己改变了它。
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();
}
}
}然后在代码中使用这一行。
UIManager.put("CheckBox.icon", new CheckBoxIcon());https://stackoverflow.com/questions/36505597
复制相似问题