2011-11-17 21 views
3

なぜ私のコードは挿入した画像を表示しないのですか?コンパイルエラーや構文エラーはありませんが、それはなぜそうですか?Java ImageIcon/IconとJLabelが機能しない

import javax.swing.JFrame; 
public class FirstUiTest { 

    public static void main(String[] args){ 

     FirstUI MyUI = new FirstUI(); 
     MyUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     MyUI.setSize(320,280); 
     MyUI.setVisible(true); 
    } 
} 
+0

は、クラス・ファイルまたはjarファイルを使用して、イメージファイルのですか?このファイルを実行できる場所 – Pratik

+0

あなたのコードにあると思われる唯一の問題は、アイコンへのパスです。 – MByD

+0

@Pratikそれはクラスファイル – user962206

答えて

3

使用しよう:

Icon pie = new ImageIcon(ImageIO.read(FirstUI.class.getResourceAsStream("pie.png"))); 
+0

元のコードは 'String'が' File'を表すと仮定してコンストラクタを呼び出していました。これはデプロイ時(Jarで1回)に失敗します。 '新しいImageIcon(FirstUI.class.getResource(" pie.png "));はあなたが書いたものとほとんど同じ効果を持つことに注意してください。 –

1

import java.awt.FlowLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.SwingConstants; 

public class FirstUI extends JFrame{ 

    private JLabel firstlabel; 
    private JLabel secondLabel; 
    private JLabel pie; 
    public FirstUI(){ 
     super("Tittle"); 
     setLayout(new FlowLayout()); 
     firstlabel = new JLabel("Hello World"); 
     firstlabel.setToolTipText("Hello World"); 

     String path = "pie.png"; 
     Icon pie = new ImageIcon(path); 
     secondLabel = new JLabel("Text with icon",pie,SwingConstants.LEFT); 
     add(secondLabel); 
     add(firstlabel); 
    } 
} 

メインクラスは、私はこの正確なコードを試してみました、それが働きました。 pie.pngが見つかりません。 eclipseを使用している場合は、プロジェクトのルート(/ binと/ srcを持つ同じフォルダー)に入れます。それ以外の場合は、javaコマンドを実行するのと同じディレクトリに配置します。 「pie.pngは」FirstUI.classの同じパスにある場合

+0

それは働いて、ありがとう:D、btw私はそれを正しくやっていますか? – user962206

+0

@ user962206うん。あなたはうまくやっていると言えるでしょう。あなたが何をやっているのか分からず、私があなたがそこに着いているのかどうかは分かりませんが、コードはまったく正当なものです。 – heneryville

関連する問題