2012-10-22 11 views
5

イメージを1つのフレームに追加しようとしていますが、動作しないようです。指定されたファイルからImageIconによって作成されたイメージ。イメージファイルは、Javaファイルが存在するseamディレクトリにあります。ImageIconをJFrameに追加するには?

import java.awt.BorderLayout; 

import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

    public class image { 

     public static void main(String args[]) 
     { 
      TimeFrame frame = new TimeFrame(); 
     } 
    } 

    class TimeFrame extends JFrame 
    { 
     //Image icon = Toolkit.getDefaultToolkit().getImage("me.jpg"); 
     ImageIcon icon = new ImageIcon("me.jpg"); 
     JLabel label = new JLabel(icon); 
     public TimeFrame(){ 
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setTitle("My Frame"); 
      setSize(500,400); 
      //this.setIconImage(icon); 
      add(label,BorderLayout.CENTER); 
      setVisible(true); 
     } 


    } 
+0

「のsrc/me.jpg」にディレクトリを変更し、[プロジェクトに画像を追加]する方法を見てください(http://stackoverflow.com/a/9866659/1057230 )とこれを手動で(IDEなしで)実行している場合は、この解答(http://stackoverflow.com/a/11372350/1057230)を参照してください。 –

答えて

5

あなたのアイコンがTimeFrame javaファイルの横にある場合、あなたはあなたが(おそらく)現在ご自分の作業ディレクトリにそれを探している

java.net.URL imgUrl = getClass().getResource("me.jpg"); 
ImageIcon icon = new ImageIcon(imgUrl); 

または

java.net.URL imgUrl = TimeFrame.class.getResource("me.jpg"); 
ImageIcon icon = new ImageIcon(imgUrl); 

を使用する必要があります経由で出力可能

System.out.println(System.getProperty("user.dir")); 
+0

ドキュメントでgetResource(...)指定された名前のリソースを検索します。この名前のリソースが見つからない場合、このメソッドはnullを返しますが、なぜ以前にはうまくいかなかったのかわかりません...これを使用して正常に動作しました:Image image = ImageIO.read(new File( " SydneyOperaHouse.jpg ")); – Bernard

4

これを試してみませんか?

ImageIcon ImageIcon = new ImageIcon("me.jpg"); 
    Image Image = ImageIcon.getImage(); 
    this.setIconImage(Image); 
+0

Oct 23 00:24:38 MacBook-Pro.local java [592] :CGContextGetCTM:無効なコンテキスト0x0 Oct 23 00:24:38 MacBook-Pro.local java [592] :CGContextSetBaseCTM:無効なコンテキスト0x0 Oct 23 00:24:38 MacBook-Pro.local java [592] :CGContextGetCTM:無効なコンテキスト0x0 Oct 23 00:24:38 MacBook-Pro.local java [592] :CGContextSetBaseCTM:無効なコンテキスト0x0 – Bernard

+0

はここですエラー私は今得ている! – Bernard

1

単に