Witam. Mam za zadanie zrobić aplikację w której można wybrać z ComboBoxa obraz który ma się obok wtedy wyświetlić. Początkowy obraz się ładuje poprawnie ale nie działa zupełnie zmienianie się obrazów (prawdopodobnie nie wywołuje się w ogóle metoda actionPerformed klasy ActionListener).
Program składa się 2 klas. Pierwsza - PrzegladarkaZdjec.java:
package przegladarkazdjec;
import javax.swing.JFrame;
public class PrzegladarkaZdjec extends JFrame{
public static void main(String[] args) {
GUI gui1 = new GUI();
gui1.show();
}
}
Druga - GUI.java:
package przegladarkazdjec;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class GUI extends javax.swing.JFrame {
Obraz obraz;
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jComboBox1 = new javax.swing.JComboBox<>();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "obraz1.jpg", "obraz2.jpg", "obraz3.jpg" }));
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(275, Short.MAX_VALUE)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(36, 36, 36))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(22, 22, 22)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(252, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
GUI() {
super("Grafika w aplikacji"); //tworzymy panel z rysunkiem
setSize(250,200);
obraz = new Obraz("img/obraz2.JPG");
obraz.setDoubleBuffered(true); //ustawiamy podwójne buforowanie
add(obraz); //dodajemy do aplikacji panel z rysunkiem
setVisible(true);
initComponents();
}
class Obraz extends JPanel {
Image im;
String sciezka="img/obraz1.JPG";
Obraz() {}
Obraz(String sciezka) {
this.sciezka = sciezka;
}
public void setSciezka(String sciezka) {
this.sciezka = sciezka;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
im = Toolkit.getDefaultToolkit().getImage(sciezka);
g.drawImage(im, 10, 10, this);
}
}
private class ActionListener1 implements ActionListener {
@Override
public void actionPerformed(ActionEvent ae) {
int wybor = jComboBox1.getSelectedIndex();
obraz.setSciezka("img/obraz"+wybor+".JPG");
repaint();
}
}
// Variables declaration - do not modify
private javax.swing.JComboBox<String> jComboBox1;
// End of variables declaration
}
Proszę o pomoc.
Erwin14