2017-08-07 13 views
0

Javaスイングのスクロールリストの現在の選択に基づいてイメージを描画します。これを行う最善の方法は、ラベルをパネルに追加することです。私はこれをやるためにさまざまな方法を試しましたが、私の人生のために、なぜそれがイメージを表示しないのか理解できません。これは私がこれまでにやったことのスニペットです。JavaのJPanelに特定のイメージを追加する

private void jList1MouseClicked(java.awt.event.MouseEvent evt) {          

     ImageIcon greenDragon = new ImageIcon("C:\\Users\\Ilmari\\Documents\\NetBeansProjects\\GUI harkkatyö\\src\\Ile\\Green_dragon.png"); 
     JLabel dragon = new JLabel(); 
     dragon.setIcon(greenDragon); 
     String selectedMonster = jList1.getSelectedValue(); 

     if(selectedMonster.equals("Green Dragon")){ 
      jPanel1.add(dragon); 
     } 
     else if(selectedMonster.equals("Black Demon")){ 
    } 
}       

最良の結果は、これまでのところ、完全に背景JLabelの画像を上書きし、画像のみで白いボックスが表示されています。

+0

あなたの再塗り方は?イメージが表示されるはずのものです – ja08prat

+0

私は実際には持っていません、JPanel.repaint()のようなものを呼び出す必要がありますか?イメージを変更するたびに? – Eckersley

+0

JPanelを使用してプログラミングする場合は、定義済みの再描画メソッドを使用する必要があります。 – ja08prat

答えて

0

画像がまったく表示されない場合。フレームの再検証と再描画が必要です。それを達成するために

は - あなたのコードにこれを追加します。

frame.getContentPane().validate(); 
frame.getContentPane().repaint(); 
1
JLabel dragon = new JLabel(); 

このラベルはクラスの属性として宣言され、それが最初に行われたとき、GUIに追加する必要があります。次にjList1MouseClickedメソッドでは、単にdragon.setIcon(..)を呼び出します。

このように、各画像の変更時にGUIを再確認する必要はありません。

jList1MouseClickedの件名JListにはmost optimized listenerを使用してください。 A ListSelectionListenerは、キーボード入力およびマウス入力に反応し、他の利点も提供する。

関連する問題