0

JFrameJavaのGUIで画像を表示しようとしています。リソース ファイルから画像を正常に読み込んで、画像をJOptionPane. これはJLabel、コンストラクターにイメージ アイコンを含む を使用して実現されました。この画像を無に追加しようとするJPanelと表示されます。

JLabel imgLabel1 = new JLabel(new ImageIcon(tsr.getTileImage(1,1)),JLabel.CENTER);
jpnDisplay.add(imgLabel1);

tsr は、タイルセットからサブイメージを取得するためのカスタム コードです。返される画像のタイプはBufferedImageです。

私が気づいたことの1つは、画像を表示してから画像にJOptionPane追加するJPanelと表示されることです。これがなぜなのかわかりません。

JLabel imgLabel1 = new JLabel(new ImageIcon(tsr.getTileImage(1,1)),JLabel.CENTER);
JOptionPane.showMessageDialog(null, imgLabel1,"Label",-1);
jpnDisplay.add(imgLabel1);`enter code here

- 編集 -

コードをいじってみると、問題は画像を表示しようとしていた方法にあるのではなく、が表示される前にが表示されJFrameない限り、何らかの理由で再描画されないことがわかりました。また、 で示したのと同じインスタンスのみをペイントします。ペイントされるその他のイメージは無視されます。理由は不明です。JOptionPaneJFrameJOptionPane

4

1 に答える 1

1

JPanel をサブクラス化し、redrawメソッドをオーバーライドして画像を描画する必要があります。

于 2013-01-10T13:14:13.970 に答える