Witajcie,
dopiero zaczynam przygodę z Javą i nawet mi fajnie wyszła aplikacja na zaliczenie przedmiotu, która pobiera źrodło strony, wyciąga linki zdjęć i wyświetla te zdjęcia. Robię to na stronie www.wallbase.cc/toplist.
Chciałem jednak trochę urozmaicić program i w dodać w menu możliwość przełączenia adresu strony z toplist na random (wallbase.cc/random) i dodać wyszukiwanie fraz (wallbase.cc/search/fraza). Sam mechanizm działa w porządku (jak podmieniam na sztywno linki w kodzie to wyświetla inne zdjęcia).
Problem pojawia się (chyba) w funkcji actionPerformed, po wybraniu jakieś opcji główne okno nie odświeża się z nowymi zdjęciami - zmienna "szukacz" dostała nowego Stringa, ale okno się nie "przemalowało".
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import javax.swing.*;
public class MojeOkno extends Frame implements WindowListener, ActionListener {
Button btnKoniec;
Label lblInfo;
MenuItem menuLos;
MenuItem menuSzukaj;
ImageCanvas imgCanvas, img2;
String strURL, szukacz = "", site;
ImageDownloader imageDownloader;
MojeOkno() throws IOException {
super("Imager");
setSize(1100, 500);
//setTitle("Nowa nazwa");
addWindowListener(this);
setLayout(new GridLayout(4, 4));
if (szukacz == "") {
site = "http://wallbase.cc/toplist";
} else {
site = "http://wallbase.cc/" + szukacz;
}
java.util.List<String> links = LinksPaser.extractLinks(site);
for (String link : links) {
strURL = link;
add(imgCanvas = new ImageCanvas());
imageDownloader = new ImageDownloader(imgCanvas);
imageDownloader.setURL(strURL);
imageDownloader.start();
}
Menu menuPlik = new Menu("Plik");
menuSzukaj = new MenuItem("Szukaj");
menuSzukaj.addActionListener(this);
menuPlik.add(menuSzukaj);
menuLos = new MenuItem("Losowe");
menuLos.addActionListener(this);
menuPlik.add(menuLos);
MenuItem menuKoniec = new MenuItem("Koniec");
menuKoniec.addActionListener(this);
menuPlik.add(menuKoniec);
MenuBar mb = new MenuBar();
mb.add(menuPlik);
setMenuBar(mb);
}
public void windowClosing(WindowEvent arg0) {
System.exit(0);
//dispose();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == menuLos) {
szukacz = "random";
this.repaint();
return;
} else if (e.getSource() == menuSzukaj) {
SzukajDialog dialog = new SzukajDialog(this);
if (dialog.czyOk) {
szukacz = "search/_" + dialog.pobierzTekst() + "_";
}
return;
}
System.exit(0);
}
}
Nie wiem dokładnie jak to opisać, mam nadzieję, że ktoś rozumie o co chodzi :)
Jak coś wkleję kod pozostałych klas.
Czy ktoś wie jak zaradzić?