G
Gelöschtes Mitglied 67058
Gast
nHallo zusammen,
ich mache vieles über "try and error".
Nun muß ich doch mal nachfragen bezüglich des Beitrags aus 2010 unter https://www.java-forum.org/thema/filechooser-bilder-auswaehlen.100911/
In meinem Programm habe ich ein Fenster, das schon geöffnet ist. In dieses Fenster soll ein Image über den FileChooser geladen werden.
Der einzige Unterschied zu dem Link oben ist, daß ich den Button mit der ActionPerformed Methode zum Laden des Images in einem separaten Fenster habe.
Ich übergebe den gesamten Panel ins Anzeigefenster. Es funktioniert. Der Button ist nicht mehr in dem Fenster, in dem das Image angezeigt wird.
Ich verstehe aber nicht weshalb das Image während der Laufzeit geändert werden kann, denn über den Button-Klick rufe ich ja nur ActionPerformed auf.
Wieso wird dann auch auf das Panel ein Update gemacht? Es dürfte eigentlich nicht nochmals aufgerufen werden.
Gerne wüßte ich was besser ist, einen Panel im Konstruktor zu übergeben oder einfach das Image übergeben und Paint nehmen? Gibt es noch mehr Möglichkeiten?
Vielen Dank.
[CODE lang="java" title="ActionPerformed"]JButton btn = new JButton("Lade Bild");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
try {
image = ImageIO.read(chooser.getSelectedFile());
bigImage.setIcon(new ImageIcon(image));
thumbImage.setIcon(getThumbnail(image));
frame.pack();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
});
frame1.add(btn);
panel = new JPanel(new BorderLayout());
thumb = new JPanel();
thumb.add(thumbImage);
big = new JPanel();
big.add(bigImage);
panel.add(thumb, BorderLayout.LINE_START);
panel.add(big, BorderLayout.CENTER);
JComponent newContentPane = newDemo(panel);[/CODE]
ich mache vieles über "try and error".
Nun muß ich doch mal nachfragen bezüglich des Beitrags aus 2010 unter https://www.java-forum.org/thema/filechooser-bilder-auswaehlen.100911/
In meinem Programm habe ich ein Fenster, das schon geöffnet ist. In dieses Fenster soll ein Image über den FileChooser geladen werden.
Der einzige Unterschied zu dem Link oben ist, daß ich den Button mit der ActionPerformed Methode zum Laden des Images in einem separaten Fenster habe.
Ich übergebe den gesamten Panel ins Anzeigefenster. Es funktioniert. Der Button ist nicht mehr in dem Fenster, in dem das Image angezeigt wird.
Ich verstehe aber nicht weshalb das Image während der Laufzeit geändert werden kann, denn über den Button-Klick rufe ich ja nur ActionPerformed auf.
Wieso wird dann auch auf das Panel ein Update gemacht? Es dürfte eigentlich nicht nochmals aufgerufen werden.
Gerne wüßte ich was besser ist, einen Panel im Konstruktor zu übergeben oder einfach das Image übergeben und Paint nehmen? Gibt es noch mehr Möglichkeiten?
Vielen Dank.
[CODE lang="java" title="ActionPerformed"]JButton btn = new JButton("Lade Bild");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
try {
image = ImageIO.read(chooser.getSelectedFile());
bigImage.setIcon(new ImageIcon(image));
thumbImage.setIcon(getThumbnail(image));
frame.pack();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
});
frame1.add(btn);
panel = new JPanel(new BorderLayout());
thumb = new JPanel();
thumb.add(thumbImage);
big = new JPanel();
big.add(bigImage);
panel.add(thumb, BorderLayout.LINE_START);
panel.add(big, BorderLayout.CENTER);
JComponent newContentPane = newDemo(panel);[/CODE]