2016-05-01 10 views
-2

でJLabelの配列は、これは私のクリックアクションで参照する方法:のJPanel

succ.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent arg0) { 
       int x=0; 
       int i; 
       labelpanel.revalidate(); 
       labelpanel.repaint(); 
      for (i=status; i<status+5; i++){ 

       RidimIcon locand = new RidimIcon(); 
       labelapp.get(i).setBounds(74+x, 1, 80, 90); 

       labelapp.get(i).setIcon(locand.newicona(pathicon[i], labelapp.get(i))); 
       labelpanel.add(labelapp.get(i)); 

        x=x+120; 
       } 
       status=status+5; //change status 
      } 

     }); 

「Labelpanelは」のJLabelの配列です:

try { 
     ResultSet rs = Datainter.eseguiQuery(query); 
     while(rs.next()) 
     { 

      pathicon[contatore] = rs.getString("locandina"); 

      JLabel tmplabel = new JLabel(); 
      labelapp.add(tmplabel); 

      labelapp.get(contatore).setIcon(new ImageIcon(pathicon[contatore])); 
      contatore++; 

     } 


    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

私はクリックするだけで5画像を参照してくださいプログラムの開発を作成したいです。私は、最初にクリックすると、ラベルが[5-5]、ラベルが[5-10]、3回目[10-11]などのように表示されます。 「succ」をクリックすると、最初に5つしか表示されないのはなぜですか? もう一度クリックして最初の5枚の画像をパネルに残すと、他の5枚のlabelappが表示されますか?

(REMOVEALLと私は私の最後のJLabelを参照カント:。。その後、新しいラベルを追加し、revalidate()repaint()を呼び出すlabelPanelから以前のすべてのラベルを削除するには

   prec.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent e) { 
       int x=0; 
       int i; 
        labelpanel.removeAll(); 
         for (i=status; i<status-5; i--){ 

          RidimIcon locand = new RidimIcon(); 
          labelapp.get(i).setBounds(74+x, 1, 80, 90); 
          labelapp.get(i).setIcon(locand.newicona(pathicon[i], labelapp.get(i))); 
          labelpanel.add(labelapp.get(i)); 

           x=x+120; 

         } 
         labelpanel.revalidate(); 
         labelpanel.repaint(); 

         status=status-5; 
      } 
     }); 
+0

「ステータス」値とは何ですか?あなたはどこを変えますか? – rdonuk

+0

ステータスは 'private int status = 0;' .. 'succ'ステータス= 5(最初の5イメージを参照)をクリックすると、ステータス= 10(私は5から10のiイメージを参照)を再びクリックします。閉じるときに変更する( 'status = status + 5;') –

+0

ダブルクリック後に10個のラベルを表示しますか?または、最後の5つのラベルのみ? – rdonuk

答えて

1

使用removeAll()

public void mouseClicked(MouseEvent arg0) { 
    int x=0; 
    int i; 

    labelpanel.removeAll(); 
    for (i=status; i<status+5; i++){ 

     RidimIcon locand = new RidimIcon(); 
     labelapp.get(i).setBounds(74+x, 1, 80, 90); 

     labelapp.get(i).setIcon(locand.newicona(pathicon[i], labelapp.get(i))); 
     labelpanel.add(labelapp.get(i)); 

     x=x+120; 
     } 

     labelpanel.revalidate(); 
     labelpanel.repaint(); 

     status=status+5; //change status 
     if(status > 17) { 
      status = 17; 
     } 
} 

そして、いくつかのアドバイス;

+0

私はあなたを愛しています。結婚してください。 –

+0

しかし、私がremoveAll()を使用すると、最後のjlabelsが表示されません。 –

+0

最初のものか何も表示されません。 – rdonuk

関連する問題