Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JRadioButtons中使用图像而不是文本_Java_Swing_User Interface_Imageicon_Jradiobutton - Fatal编程技术网

Java 如何在JRadioButtons中使用图像而不是文本

Java 如何在JRadioButtons中使用图像而不是文本,java,swing,user-interface,imageicon,jradiobutton,Java,Swing,User Interface,Imageicon,Jradiobutton,我有一组JRadioButtons。我想在我的JRadioButtons中使用图像而不是文本。因此,我相信我将不得不使用这个: JRadioButton(Icon icon, boolean selected) 现在的问题是,我不知道如何创建这个图标。我有我想要使用的图像,并且我已经在我的源代码文件夹中复制了该图像。它是.tiff格式的。我想阅读.tiff图像(我相信是inputStream)并将其转换为图标,这样我就可以拥有我的JRadioButtons了 请帮助执行此操作 提前感谢。假设您

我有一组
JRadioButtons
。我想在我的
JRadioButtons
中使用图像而不是文本。因此,我相信我将不得不使用这个:

JRadioButton(Icon icon, boolean selected)
现在的问题是,我不知道如何创建这个图标。我有我想要使用的图像,并且我已经在我的源代码文件夹中复制了该图像。它是.tiff格式的。我想阅读.tiff图像(我相信是inputStream)并将其转换为图标,这样我就可以拥有我的JRadioButtons了

请帮助执行此操作


提前感谢。

假设您将映像放在源文件夹中的包
com.foo.bar
中,并且构建过程将此文件与类一起复制,以便在运行应用程序时将其放在类路径中(默认情况下,所有IDE都是这样做的),您可以使用

new ImageIcon(MyClass.class.getResource("/com/foo/bar/MyImage.png"))
给你一个图标


我不确定Java是否对tiff格式具有本机支持,因此您可能必须将图像转换为另一种受支持的格式才能加载它(gif、JPEG和PNG可以正常工作)。

如果您遇到NullPointerException,可能意味着图像不在您所指示的路径上

你说你把它放在了src文件夹中,这样应该可以:

new ImageIcon(getClass().getResource("icon.jpg"))

查看
ImageIcon
API。使用获取图像的构造函数。您可以绘制图标,请参见..我不想绘制它,我想使用源文件夹中的图像。我尝试使用这个构造函数:ImageIcon(字符串文件名),但它不起作用。我将jpeg(非tiff)目录放在我的src文件夹中,而不是/com/foo/bar/MyImage.png。当我运行它时,它不工作。另外,我不明白当我把java小程序放在服务器上时,如何读取图像,位置会发生正确的变化。程序抛出java.lang.NullPointerException,这意味着什么?如果它在根目录下,那么路径将是
/MyImage.jpg
。不,它不会在小程序中更改。只要图像在类路径中,它就会以这种方式加载。我不能说NPE意味着什么,除非看到导致它的代码和它的堆栈跟踪。它起作用了,我犯了一个错误。但是现在,当我使用这个构造函数时:JRadioButton(图标图标,布尔选择),但它不是替换文本而是替换按钮本身,idk,如果你明白我的意思,它是有效的!你能解释一下怎么做吗?为什么我们需要“getClass()”?MyClass.class.getResource()和
getClass().getResource()
都应该可以工作(我刚刚测试确认)。我不确定这是否回答了你关于“如何”的问题?是的,它现在起作用了,我犯了一个愚蠢的错误,图像在项目文件夹中,但不在src中。我很高兴你修复了它!