Hey Leute,
ich möchte folgendes realisieren. Ich hab eine JList mit BilderNamen in eine JScrollPane gelegt,wenn ich auf ein Element der Liste klicke öffnet sich ein bild im selben fenster neben der Liste.Die Bilder werden zuvor in eine ArrayList geladen und dann in einer Methode aus diesem ArrayList ausgelesen und zur JList hinzugefügt.Mit einem Button soll das Bild an einem bestimmten Pfad kopiert und das ursprüngliche bild gelöscht werden.
Das alles funktioniert auch bereits!
Die ArrayList wird gleich danach aktualiesiert,das funktioniert auch alles. Jedoch funktioniert folgendes nicht: nachdem die ArrayList aktualisiert wurde,will ich meine JList wieder wie zuvor gefüllt haben und dann fängts an zu hageln. Wenn ich dann versuche auf ein Element der JList zu klicken,kriege ich eine "IndexOutOfBoundExceptopn index -1". Ich verstehe einfach nicht warum mein index auf -1 gesetzt wird,habe das eigentlich ziehmlich genau so schon in einem anderen Programm realisiert und dort funktionierte das ganze wunderbar.Es war allerdings ein ButtonListener und kein MouseListener.
ich möchte folgendes realisieren. Ich hab eine JList mit BilderNamen in eine JScrollPane gelegt,wenn ich auf ein Element der Liste klicke öffnet sich ein bild im selben fenster neben der Liste.Die Bilder werden zuvor in eine ArrayList geladen und dann in einer Methode aus diesem ArrayList ausgelesen und zur JList hinzugefügt.Mit einem Button soll das Bild an einem bestimmten Pfad kopiert und das ursprüngliche bild gelöscht werden.
Das alles funktioniert auch bereits!
Die ArrayList wird gleich danach aktualiesiert,das funktioniert auch alles. Jedoch funktioniert folgendes nicht: nachdem die ArrayList aktualisiert wurde,will ich meine JList wieder wie zuvor gefüllt haben und dann fängts an zu hageln. Wenn ich dann versuche auf ein Element der JList zu klicken,kriege ich eine "IndexOutOfBoundExceptopn index -1". Ich verstehe einfach nicht warum mein index auf -1 gesetzt wird,habe das eigentlich ziehmlich genau so schon in einem anderen Programm realisiert und dort funktionierte das ganze wunderbar.Es war allerdings ein ButtonListener und kein MouseListener.
Java:
public class Mainframe {
private static DefaultListModel listModel = new DefaultListModel();
private static JList screenListe = new JList(listModel);
private static JScrollPane screenListeScroll = new JScrollPane(screenListe);
public static Container pane;
public static JFrame mainFrame;
//mein gekürzter Frame,alle sachen,die nichts mit der JList zutun haben wurden hier entfernt!
public static void mainScreen() {
mainFrame = new JFrame();
mainFrame.setTitle("HLR Ban Poster");
mainFrame.setSize(900, 700);
pane = mainFrame.getContentPane();
pane.setLayout(new BorderLayout());
JPanel pnlScreens = new JPanel();
pnlScreens.setLayout(new GridLayout(1, 1));
pnlScreens.setBorder(BorderFactory.createTitledBorder("Screenshots"));
pnlScreens.add(screenListeScroll);
pane.add(pnlScreens, BorderLayout.WEST);
screenListeAnzeigen();
//MouseListener der JList,der die angeklickten Bilder sichtbar macht!
screenListe.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
index = screenListe.getSelectedIndex();
imageName = Settings.getScreenArray().get(index);
pfad = Settings.pfad + "\\" + imageName;
screen = Jimi.getImage(pfad);
ImageIcon bild = new ImageIcon(screen);
JLabel label = new JLabel(bild, JLabel.CENTER);
JScrollPane sc = new JScrollPane(label);
sc.setBorder(BorderFactory.createTitledBorder("Image"));
pnlScreenStat.add(sc, BorderLayout.CENTER);
mainFrame.setVisible(true);
}
});
//gekürzte ActionListener des erwähnten Buttons. "Settings.list();" aktuallisiert meine ArrayList.
btnReport.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent reportEvent) {
Settings.deletePic(imageName);
Settings.list();
screenListeAnzeigen();
succesfull!");
}
});
mainFrame.setVisible(true);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//screenListe ist meine JList. ScreenArray ist die zuvor erwähnte ArrayList.
public static void screenListeAnzeigen() {
screenListe.removeAll();
listModel.removeAllElements();
for (int i = 0; i < Settings.getScreenArray().size(); i++) {
listModel.addElement(Settings.getScreenArray().get(i));
screenListe.updateUI();
}
screenListe.updateUI();
}
public static void main(String[] args) {
}