galeria zdjec

0

Czesc wszystkim.
Chcialbym napisac mala galerie zdjec.
Bede mail kilka paneli i kazdy z nich to badzie malutka galeria skladajaca sie z z jednego duzego zdjecia i reszty malych, dwa przyciski (przod, wstecz), i oczewiscie dostosowanie rozmiaru zdjecia do wielkosci JLabel.
Siedze nad tym od rana przekopalem chyba wszystko co bylo mozliwe i wiekszosc zeczy, ktore znalazlem sa w javascrypt, poza tym natrafilem na metody paintcomponents itp, ale niezbyt jest to jasne jak moglbym to wykorzystac w petli ( moze razem z watkami zeby to orzywic),
moze spotkaliscie sie z podobnym problemem ?

0

javascript? to chyba źle szukasz :P

Po pierwsze proponuję użyć CardLayout możesz elegancko przeskakiwać po kolei pomiędzy kolejnymi Panelami w przód i w tył. przykładzik:
http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html

na poszczególnych panelach zrób jakiegoś GirdLayouta i do każdej komórki dodawaj JLabel ze zdjęciem. Jeżeli chcesz żeby zdjęcia zachowywały proporcję to musisz sobie stworzyć klasę dziedziczącą po JPanel lub JLabel która wyrysuje Ci zdjęcie z zachowaniem proporcji podam Ci przykład jaki ja wykorzystuje często


class JLan extends JLabel {
 public Image img;
 public int xx;
 public int yy;
        @Override
        protected void paintComponent(Graphics g) {

                super.paintComponent(g);

                //sprawdzamy czy zdjecie istnieje
                if(img!=null){
                int wys=img.getHeight(this);
                int szer=img.getWidth(this);
                xx=this.getSize().width;
                yy=this.getSize().height;
                //liczymy stosunek wielkosci komponentu do zdjecia
                double stx=(double)xx/(double)szer;
                double sty=(double)yy/(double)wys;
                int szerw,wysw;
                //sprawdzamy do ktorego rozmiaru nalezy znormalizowac zdjecie
                if(sty<stx){
                    szerw=(int)(szer*sty);
                    wysw=(int)(wys*sty);
                }else{
                    szerw=(int)(szer*stx);
                    wysw=(int)(wys*stx);    
                }
                //skalujemy i rysujemy zjdecie, lapiemy wyjatek jakby cos było nie tak Obsługa dla Ciebie :)
                try{
                Image img1=img.getScaledInstance(szerw, wysw,java.awt.Image.SCALE_SMOOTH);    
                g.drawImage(img1, (int)((xx-szerw)/2),(int)((yy-wysw)/2), szerw, wysw, this);
                }catch(Exception eee){

                }
                }




        }       

    }

powinno pomóc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1