如何在JPanel中查看JLabel数组

时间:2016-05-01 18:26:40

标签: java swing jlabel

这是我的点击操作:

  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
            }

         });

&#34; Labelpanel&#34;是一个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张图片的程序。我有50个图像的阵列标签,当我第一次点击时看到1 - 5个标签[1-5],当我第二次点击时我看到标签[5-10],第三次[10-11]等。 当我点击&#34; succ&#34;?为什么我只看到前5个labelapp 当我再次点击并在面板中留下前5个图像时,我怎么能看到其他5个labelapp?

(删除所有我无法看到我最后的Jlabels:

             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;
            } 
        });

1 个答案:

答案 0 :(得分:1)

使用removeAll()删除labelPanel中的所有先前标签。然后添加新标签并致电revalidate()repaint()

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;
      }
}

和一些建议;