2012-12-29 30 views
1

我有一組JRadioButtons。我想在我的JRadioButtons中使用圖片而不是文字。所以我相信我將不得不使用這個:如何在JRadioButtons中使用圖片而不是文字

JRadioButton(Icon icon, boolean selected) 

現在的問題是,我不知道如何創建此圖標。我有我想要使用的圖像,並且已將圖像複製到我的源代碼文件夾中。它是以.tiff格式。我想閱讀.tiff圖像(inputStream我相信)並將其轉換爲圖標,以便我可以有我的JRadioButtons。

請幫助實施此。

在此先感謝。

+0

看那'ImageIcon' API。使用帶有Image的構造函數。 –

+0

您可以畫一個圖標,請參閱...... http://docs.oracle.com/javase/6/docs/api/javax/swing/Icon.html – ridoy

+0

我不想畫它,我想使用圖像我在我的源文件夾中。我嘗試使用這個構造函數:ImageIcon(String filename),但它不工作。 –

回答

1

假設您將映像放在源文件夾中的包com.foo.bar中,並且構建過程將此文件與您的類複製,以便它在運行應用程序時位於類路徑中(這是所有IDE默認執行的操作),你可以使用

new ImageIcon(MyClass.class.getResource("/com/foo/bar/MyImage.png")) 

讓你一個圖標。

我不知道Java有TIFF格式的原生支持,所以您可能需要將圖像轉換爲另一種支持的格式加載它(GIF,JPEG和PNG將正常工作)。

+0

而不是/com/foo/bar/MyImage.png我把jpeg(不是tiff)的目錄放在我的src文件夾中。當我運行它時,它不起作用。另外我不明白,當我把我的Java小程序放在服務器上時,我將如何讀取圖像,位置會發生變化。 –

+0

程序拋出java.lang.NullPointerException,這是什麼意思? –

+0

如果它位於根,那麼路徑將是'/ MyImage.jpg'。不,它不會在applet中改變。只要圖像在類路徑中,它就會以這種方式加載。如果沒有看到導致它的代碼和它的堆棧跟蹤,我不能說NPE的含義。 –

1

如果你得到一個NullPointerException,它可能意味着圖像不在你指示的路徑。

你說你堅持它直接進入src文件夾所以這應該工作:

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

它的作品!你能解釋一下嗎?爲什麼我們需要「getClass()」? –

+0

'MyClass.class.getResource()'和'getClass()。getResource()'都應該可以工作(我剛測試過確認)。我不確定這是否回答你的問題「如何」? – aly

+0

是的,它現在的作品,我犯了一個愚蠢的錯誤,圖像在項目文件夾,但不是在src。 –

相關問題