两个问题:一个是复选框的icon背景如何变灰,就象Press时候那样的颜色;第二个是关于组件占据空间的问题 翻了翻JCheckBox的相关源代码,不太明白icon的变化机制。如果用new JCheckBox(),defaultIcon值为空,那么显示的那个框是哪里设置的还有怎么设置getDisableIcon第二个问题:如果有两个组件并列排放,如何将前一个设置为不可见,并且不占据空间:-)即第二个组件从原来第一个组件的位置开始摆放不知道有没有表达清楚,请大家帮忙。学习swing中……尽快结贴…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 针对第一个问题自己做了个东西,大家有空看一眼public class ColorCheckBox extends JCheckBox { private Color color; public ColorCheckBox(String name){ super(name); } private MetalCheckBoxIcon defaultIcon = new MetalCheckBoxIcon() { public void paintIcon(Component c, Graphics g, int x, int y) { if(color != null){ g.setColor(color); JCheckBox cb = (JCheckBox)c; if(cb.isBorderPaintedFlat()) { g.fillRect(x+2, y+1, getControlSize()-2, getControlSize()-2); }else{ g.fillRect(x, y, getControlSize()-1, getControlSize()-1); } } super.paintIcon(c, g, x, y); } }; /** * @return 返回 color。 */ public Color getColor() { return color; } /** * @param color 要设置的 color。 */ public void setColor(Color color) { this.color = color; } /* (非 Javadoc) * @see javax.swing.AbstractButton#getIcon() */ public Icon getIcon() { return defaultIcon; } public static void main(String[] args) { JFrame frame = new JFrame(); ColorCheckBox check = new ColorCheckBox("我靠"); check.setOpaque(false); check.setColor(Color.LIGHT_GRAY); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(check); frame.getContentPane().setBackground(Color.WHITE); frame.setSize(200,200); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } 1.ICON为空的话,就是个空框,没有什么地方设置,就像一个JLable未设置Icon的样子 有设置setDisabledIcon()的方法2.设置FlowLayout,然后放置控件 getClass().getMethod()参数问题 问个网络的问题.不知道应该发在哪? 想做个网页监控程序大家进来给点意见 请问谁有jni方面的资料?急需,谢谢! 不会安装JDK 怎么批量的插入数据? Socket编程问题 莱鸟举手提问哪里错了??? 问题:如何使用Java取得系统JAVA_HOME的设置和classpath路径信息 请教java的调试技术,并请推荐几个比较好的资料! 我是才学JAVA的,如何生成引用一个数组?? 如何给树添加右键弹出菜单呢?而且要根据不同级别的节点弹出不同的菜单
private Color color;
public ColorCheckBox(String name){
super(name);
}
private MetalCheckBoxIcon defaultIcon = new MetalCheckBoxIcon() {
public void paintIcon(Component c, Graphics g, int x, int y) {
if(color != null){
g.setColor(color);
JCheckBox cb = (JCheckBox)c;
if(cb.isBorderPaintedFlat()) {
g.fillRect(x+2, y+1, getControlSize()-2, getControlSize()-2);
}else{
g.fillRect(x, y, getControlSize()-1, getControlSize()-1);
}
}
super.paintIcon(c, g, x, y);
}
}; /**
* @return 返回 color。
*/
public Color getColor() {
return color;
}
/**
* @param color 要设置的 color。
*/
public void setColor(Color color) {
this.color = color;
}
/* (非 Javadoc)
* @see javax.swing.AbstractButton#getIcon()
*/
public Icon getIcon() {
return defaultIcon;
}
public static void main(String[] args) {
JFrame frame = new JFrame();
ColorCheckBox check = new ColorCheckBox("我靠");
check.setOpaque(false);
check.setColor(Color.LIGHT_GRAY);
frame.getContentPane().setLayout(new FlowLayout());
frame.getContentPane().add(check);
frame.getContentPane().setBackground(Color.WHITE);
frame.setSize(200,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
有设置setDisabledIcon()的方法
2.设置FlowLayout,然后放置控件