2016-11-24 15 views
-1

私はSwingを初めて使い、以下のコードを使用して自分のプロジェクトにドラッグした単純なイメージを表示しようとしています。コンパイルして実行すると、イメージは表示されません。Java - Swing表示イメージが動作しない

ちょうど私はこの方法でファイルパスからイメージを取得するのとは反対に、これをやりたがっています。

コード:

public static void main(String[] args) throws IOException { 
    // TODO Auto-generated method stub 

    ImageProcessorApp IPA = new ImageProcessorApp(); 
    IPA.displayImage(); 
} 

void displayImage() throws IOException { 
    JFrame frame = new JFrame("frame"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(500, 500); 
    frame.setVisible(true); 

    BufferedImage wPic = ImageIO.read(this.getClass().getResource("url-2.jpg")); 
    JLabel wIcon = new JLabel(new ImageIcon(wPic)); 
    frame.add(wIcon); 
    System.out.println("added image"); 

} 
+1

: は、これは解決策を働いていますか?私の推測では、ファイル名/パスが間違っているということです。どのパスに正確にドラッグしたのですか? – cello

+0

getResourceメソッドで見つけることができるように、イメージファイルはクラスパス上にありますか?クラスパスがどこにあるかを知るには:System.out.println(System.getProperty( "java.class.path")); – NormR

答えて

0

まず、メソッド.setVisible()を呼び出す必要があります。フレーム内のすべてのコンポーネントを追加した後にのみ。 セカンダリ - 画像のパスを修正する必要があります。メインクラスの横のプロジェクトに画像を追加するだけです。 。 `this.getClass()のgetResource( "URL-2.JPG")` null以外のオブジェクトを返すん

import javax.swing.*; 
    import java.io.IOException; 

    /** 
    * Created by Алексей on 24.11.2016. 
    */ 
public class Main { 

public static void main(String[] args) throws IOException { 

    displayImage(); 
} 

public static void displayImage() throws IOException { 
    JFrame frame = new JFrame("frame"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(500, 500); 

    JLabel imgLabel = new JLabel(new ImageIcon("src/url-2.jpg")); 

    frame.add(imgLabel); 

    frame.setVisible(true); 
} 
} 
0

は、画像を追加した後

frame.validate(); 

を使用してみてください、それ以外の場合には、フレームが更新されることはありません! それでも問題が解決しない場合は、リソースが見つかったかどうかを確認してください。バージョンの作業

void displayImage() throws IOException { 
     JFrame frame = new JFrame("frame"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(500, 500); 
     frame.setVisible(true); 

     BufferedImage wPic = ImageIO.read(ClassLoader.getSystemResource("img/url-2.jpg")); 
     JLabel wIcon = new JLabel(new ImageIcon(wPic)); 
     frame.add(wIcon); 
     frame.validate(); 
     System.out.println("added image"); 

    } 
0

も非常に最後まで自分のフレーム関連のコードを入れてみてください。 私はあなたがそれを検証する必要性を避けるこの方法だと思います。

関連する問題