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
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 :)