2012-04-28 7 views
1

JPanelに画像を読み込もうとしています。JFileChooserを使用しています。しかし、プログラムを実行して選択した画像をロードしようとすると、JPanelに何も起こりません。ソースコードスニペットをここに添付しています:JFileChooserを使用したJPanelでの画像読み込み

誰もがこれに光を当てることができますか?

+0

、。 * "後でその位置からシフトされた..これを制限する方法(?)" *レイアウト。さらに詳しい情報私はSSCCEを見るとき。 –

+0

@ user976754:あなたの[sscce](http://sscce.org/)の基礎としてcited [here](http://stackoverflow.com/a/10362719/230513)の例を使うことができます。 – trashgod

答えて

0

なぜ塗料成分で試してみませんか?

class imagePanel extends JPanel 
{ 
    BufferedImage image; 
    public void paintComponent(Graphics g) 
    { 
    super.paintComponent(g); 
    if(image != null) 
    { 
     g.drawImage(image, 0, 0, this); 
    } 
    } 
} 
+0

実際にimagePanelはJPanelのオブジェクトです。私はそれのpaintComponentメソッドを呼び出すことができますが、そこにグラフィックスgのための引数になるでしょう.... – user976754

0

これにはいくつかの理由が考えられます。再描画を強制的に実行するために再描画を呼び出す前に試してみるとよいでしょう。

imagePanel.invalidate() 

ラベルが小さくてサイズ変更が必要な場合があります。以前は画像がない可能性があります。

frame.pack(); 

メソッドを呼び出すと、コンポーネントのサイズを再計算することができます。

または、イメージの表示に十分なスペースがあるように、ラベルのサイズを強制的に(最小サイズを設定して)試してみることもできます。

+0

おかげで両方のmetohdsが動作していると私は画像を読み込むことができます。しかし、問題は私のフレームに2つのパネルを追加したことです。 imagePanelの境界内にイメージをロードします。ここでは、画像をロードした後、第2のパネルがその位置から離れるようにシフトされ、imagePanelが最もフレーム位置を占める。これを制限する方法。 – user976754

+0

はレイアウトを正しくするには常に微妙です。最初のパネルの1つに最大サイズを設定すると、スクロールバーが大きくなりすぎて画像パネルがjscrollpaneに収まらないことがあります。つまり、画像が大きくなりすぎるとスクロールバーが表示されます。または、ユーザーがイメージを選択する前にプレースホルダイメージを最初のパネルにロードして、イメージが選択された後にGUIが移動しないようにして、ユーザーが大きすぎるイメージを選択した場合に再度jscrollpaneを使用することができますいくつかのJavaライブラリ) –

2

問題は、フレームに2つのパネルが追加されていることです。

あなたは二つのパネル使用しています。この完全なexampleでやっていることを比較があります右に左と表示パネル上のファイル選択を。 [SSCCE](http://sscce.org/)を投稿早いほど良いのヘルプについて

1

私は、これはあなたを助けるかもしれないと思う...

Object selectedItem = jComboBox14.getSelectedItem(); 
ImageIcon picturetoInsert = new ImageIcon(selectedItem.toString()); 
JLabel label = new JLabel("", picturetoInsert, JLabel.CENTER); 
JPanel panel = new JPanel(new GridLayout(1, 1)); 
panel.add(label, BorderLayout.CENTER); 
jInternalFrame22.getContentPane(); 
jInternalFrame22.setContentPane(panel); 
jInternalFrame22.setVisible(true); 
関連する問題