[Java] Najlepszy sposób na wstawianie obrazków


(Vandavv96) #1

Witam

Piszę program z GUI i chciałbym dać możliwość, żeby po wciśnięciu przycisku zmienił się obrazek w JFrame, lecz nie za bardzo wiem jakiej funkcji użyć, aby zmieniać obrazki, bo stworzyć jeden który będzie przez cały program potrafię. Pomoglibyście?


(Frankfurterium) #2

Swingowy hak na obrazki:

new JLabel(new ImageIcon("ścieżka-do-obrazka"));

(Vandavv96) #3

a nie ma metody, która by to robiła?


(Frankfurterium) #4

W “prawdziwych” językach programowania (w odróżnieniu od DSL-i albo “skryptów dla mas” pokroju AutoIt) stosunkowo rzadko występuje sytuacja, kiedy na jedną złożoną czynność przypada dokładnie jedna prosta komenda. Gdyby JFrame miał po jednej metodzie na wszystko (w tym na automatyczną zmianę obrazka po wciśnięciu przycisku), to byłaby z tego klasa-kobyła. Zamiast tego ma kilka-kilkanaście (nie licząc metod “rodzica”) własnych, za pomocą których można osiągnąć wiele naprawdę egzotycznych efektów.

 

W tym wypadku powinieneś podpiąć pod ramkę listenera na kliknięcie i po odnotowaniu zdarzenia zmienić zawartość komponentu trzymającego obrazek. Przykładowo:

JFrame frame = new JFrame();
        final JLabel label = new JLabel(new ImageIcon("path.jpg")); 
        frame.add(label);
        
        frame.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                label.setIcon(new ImageIcon("path.jpg"));
            }
        });