Hallo Leute,
Ich haenge bereits seit Stunden an dieses Problem. Ich hoffe, Ihr koennt mir weiterhelfen.
Vorhaben:
Bilder aus einem Directory als thumbnails(gesized also) in JTabbedPanel laden. Sobald man auf eines der Thumbnails klickt, soll es oben gross angezeigt werden.
Problem:
Bilder werden nicht in JTabbedPanel angezeigt. Entweder erscheinen dort kleine schwarze Buttons, ohne Bilder(Wobei die Anzahl auch nicht stimmt), oder garkeine Buttons im Tab.
Vielleicht findet Ihr ja denn Fehler.
Ich haenge bereits seit Stunden an dieses Problem. Ich hoffe, Ihr koennt mir weiterhelfen.
Vorhaben:
Bilder aus einem Directory als thumbnails(gesized also) in JTabbedPanel laden. Sobald man auf eines der Thumbnails klickt, soll es oben gross angezeigt werden.
Problem:
Bilder werden nicht in JTabbedPanel angezeigt. Entweder erscheinen dort kleine schwarze Buttons, ohne Bilder(Wobei die Anzahl auch nicht stimmt), oder garkeine Buttons im Tab.
Vielleicht findet Ihr ja denn Fehler.
Code:
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FilenameFilter;
import javax.swing.*;
import javax.swing.border.Border;
class WindowDesign extends JFrame {
private static final long serialVersionUID = 1L;
JPanel paneMain = new JPanel();
JPanel paneOben = new JPanel();
JPanel paneUnten = new JPanel();
JPanel obenRechts = new JPanel();
JPanel obenLinks = new JPanel();
JPanel obenMain = new JPanel();
ImageIcon thumbnail;
File folder = new File("C:\\images\\");
ImagePanel paneImage = new ImagePanel(new ImageIcon("C:\\images\\pic01.jpg").getImage());
JButton button;
JPanel tabPanel = new JPanel();
JTabbedPane tabMain = new JTabbedPane(JTabbedPane.BOTTOM); // JTabbedPane wird erstellt
FilenameFilter filter = new FileListNames(".jpg");
File[] listOfFiles = folder.listFiles(filter);
ImageIcon icon;
public WindowDesign() {
super("Fotoalbum");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1024,768);
BoxLayout box = new BoxLayout(paneMain, BoxLayout.Y_AXIS);
Border redline = BorderFactory.createLineBorder(Color.red);
paneOben.setPreferredSize(new Dimension(1024, 600));
paneUnten.setPreferredSize(new Dimension(1024, 168));
tabMain.add(tabPanel); // Panel wird zu tabbedPane geadded
paneUnten.add(tabMain); // JTabbedPane wird zum unteren Panel Hinzugefuegt
obenLinks.setPreferredSize(new Dimension(100,600));
obenRechts.setPreferredSize(new Dimension(100,600));
obenMain.setPreferredSize(new Dimension(824,600));
Border blackline = BorderFactory.createLineBorder(Color.black);
//paneMain.setBorder(redline);
obenRechts.setBackground(Color.pink);
obenMain.setBackground(Color.pink);
obenLinks.setBackground(Color.pink);
paneMain.setBackground(Color.pink);
paneOben.setBackground(Color.pink);
paneUnten.setBackground(Color.pink);
obenMain.add(paneImage);
paneOben.add(obenLinks);
paneOben.add(obenMain);
paneOben.add(obenRechts);
paneMain.add(paneOben);
paneMain.add(paneUnten);
add(paneMain);
setVisible(true);
load.execute(); //SwingWorker wird gestartet
}
SwingWorker load = new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
for (int i = 0; i < listOfFiles.length; i++){
if (listOfFiles[i].isFile()){
ImageIcon icon = new ImageIcon(listOfFiles[i].getName());
thumbnail = new ImageIcon(resizedImage(icon.getImage(), 33, 33)); // Thumbnail(ImageIcon) ist das verkleinerte Bild
button = new JButton(thumbnail);
tabPanel.add(button);
}
}
return null;
}
};
private Image resizedImage(Image icon2, int w, int h) { //Bildergroesse wird angepasst
BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = resizedImg.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(icon2, 0, 0, w, h, null);
g2.dispose();
return resizedImg;
}
}
class FileListNames implements FilenameFilter {
File folder = new File("C:\\images\\");
File[] listOfFilesChecked;
String extension;
public FileListNames(String extension) {
this.extension = extension;
}
@Override
public boolean accept(File dir, String name) {
if (name.endsWith(this.extension)) {
return true;
}
else {
return false;
}
}
}