我创建了从ButtonGroup的改变所有JradioButton将图标的方法:

public void setRadioButtonIcons(final ButtonGroup gruppe){

        Enumeration<AbstractButton> gruppeEnum = gruppe.getElements();

    while (gruppeEnum.hasMoreElements()){
        AbstractButton radio = gruppeEnum.nextElement(); 
        Icon unselIcon = new ImageIcon( Thread.currentThread().getContextClassLoader().getResource("checkbox0.jpg").getPath()); 
        Icon selIcon = new ImageIcon( Thread.currentThread().getContextClassLoader().getResource("checkbox1.jpg").getPath());
        radio.setIcon(unselIcon); 
        radio.setSelectedIcon(selIcon);
    }

    }

此工作正常的Ubuntu下与Java 1.6.0_16。

当我使用用java 1.6.0_18视窗7下的梅索德,这些图标没有apear。他们只是缺少。该PROGRAMM不会抛出一个空指针...它找到的图标,但不显示它们。有任何想法吗?这似乎有点难以置信,我无法在Windows下使用这样一个简单的功能。

我与GIF和JPG尝试过。我也把图像中的罐内,并试图从文件系统加载它们。 - >相同的结果

编辑:在该配置中,所述文件是从罐装载

有帮助吗?

解决方案

    Icon unselIcon = new ImageIcon( Thread.currentThread().getContextClassLoader().getResource("checkbox0.jpg").getPath()); 
    Icon selIcon = new ImageIcon( Thread.currentThread().getContextClassLoader().getResource("checkbox1.jpg").getPath());

您不应该调用的getPath()那里,应该仅仅是:

    Icon unselIcon = new ImageIcon( Thread.currentThread().getContextClassLoader().getResource("checkbox0.jpg")); 
    Icon selIcon = new ImageIcon( Thread.currentThread().getContextClassLoader().getResource("checkbox1.jpg"));

有将不能够通过路径访问一个资源在一个罐子和一个ImageIcon可以使用URL就好加载图像。

如果您还没有看到你的图标,那么它可能是L&F使用的是不使用这些图标,而是使用它自己的。也许尝试使用不同的L&F测试代码。

其他提示

尝试移除到getPath()呼叫,这样的:

public void setRadioButtonIcons(final ButtonGroup gruppe) {
    Enumeration<AbstractButton> gruppeEnum = gruppe.getElements();
    while (gruppeEnum.hasMoreElements()){
        AbstractButton radio = gruppeEnum.nextElement(); 
        Icon unselIcon = new ImageIcon(Thread.currentThread().getContextClassLoader().getResource("checkbox0.jpg")); 
        Icon selIcon = new ImageIcon(Thread.currentThread().getContextClassLoader().getResource("checkbox1.jpg"));
        radio.setIcon(unselIcon); 
        radio.setSelectedIcon(selIcon);
    }
}

问题是,URL.getPath()给你一个字符串的URL,这不一定是那种在ImageIcon字符串构造函数需要一个有效的字符串的文件名。幸运的是,ImageIcon有另一个构造一个理解URL对象,所以没有必要调用getPath()

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top