G
import java.awt.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import java.io.*;
import javax.imageio.*;
public class LoadingPic {
public static void main(String[] args){
final int FRAME_WIDTH=760; //<----ECKLIG, NICHT NACHBAUEN!
JFrame frame=new JFrame("LoadingPic");
frame.setSize(FRAME_WIDTH,FRAME_WIDTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
JFileChooser fileChooser=new JFileChooser();
fileChooser.setFileFilter(new FileFilter(){
public boolean accept(File f){
return f.isDirectory()||
f.getName().toLowerCase().endsWith(".gif")||
f.getName().toLowerCase().endsWith(".jpg");
}
public String getDescription(){
return "jpg, gif";
}
});
fileChooser.showOpenDialog(null);
File[] files=fileChooser.getCurrentDirectory().listFiles(new FilenameFilter(){
public boolean accept(File f, String s) {
return s.toLowerCase().endsWith(".gif")||
s.toLowerCase().endsWith(".jpg");
}
});
Image[] img=new Image[files.length];
for(int i=0; i<files.length; i++){
System.out.println(files[i].getName());
try{
img[i]=ImageIO.read(files[i]);
}catch(IOException e){
System.out.println(e);
}
}
//ACHTUNG!!! ECKELHAFTER CODE!!!
int picsInRow=(int)(Math.sqrt(img.length)+1);
int picWidth=(int)(FRAME_WIDTH/(float)picsInRow);
for(int x=0; x<picsInRow; x++){
for(int y=0; y<picsInRow; y++){
if(x+y*picsInRow<img.length){
frame.getContentPane().getGraphics().drawImage(
img[x+y*picsInRow], x*picWidth, y*picWidth, picWidth, picWidth, frame.getContentPane());
}
}
}
}
}
public class Browser extends JFrame {
static Bildbetrachter fenster;
Image bild;
int index = 0;
int x_pos,y_pos;
String name;
CBildLeinwand bildanzeige;
File[] dateiweg;
private JFileChooser chooser;
int bild_x1,bild_y1; // die aktuelle Begrenzung
int bild_x2,bild_y2; // des Bildes
int bildBreite,bildHoehe;
class ActionLauscher implements ActionListener {
public void actionPerformed(ActionEvent e) {
String Label;
Label = e.getActionCommand();
if (Label.equals("Objektbrowser")){
laden();
}
if (Label.equals("beenden"))
System.exit(0);
if(Label.equals("weiter")){
index++;
if(index > dateiweg.length-1) {
index = 0;
}
ImageIcon tmp = new ImageIcon(dateiweg[index].getAbsolutePath());
bild = tmp.getImage();
}
if(Label.equals("zurück")){
index--;
if(index < 0) {
index = dateiweg.length-1;
}
ImageIcon tmp = new ImageIcon(dateiweg[index].getAbsolutePath());
bild = tmp.getImage();
}
repaint();
}
}
Bildbetrachter (String titel) {
super(titel);
x_pos = y_pos ;
bild_x1 = bild_x2 = bild_y1 = bild_y2;
name = null;
bild = null;
setLayout(new BorderLayout());
bildanzeige = new CBildLeinwand();
bildanzeige.setSize(1024,300);
add(bildanzeige,BorderLayout.NORTH);
bildanzeige.setBackground(Color.white);
JPanel Button = new JPanel();
JButton weiter = new JButton("weiter");
JButton zurück = new JButton("zurück");
Button.add(zurück);
Button.add(weiter);
add(Button,BorderLayout.SOUTH);
weiter.addActionListener(new ActionLauscher());
zurück.addActionListener(new ActionLauscher());
JScrollPane listenScrollPane = new javax.swing.JScrollPane();
listenScrollPane.setViewportView(bildanzeige);
add(listenScrollPane);
JMenuBar menuleiste = new JMenuBar();
setJMenuBar(menuleiste);
JMenu menu = new JMenu("Datei"); //menu erstellen
JMenuItem laden = new JMenuItem("Objektbrowser"); //Menubutton laden
laden.addActionListener(new ActionLauscher());
JMenuItem beenden = new JMenuItem("beenden");
beenden.addActionListener(new ActionLauscher());
menu.add(laden);
menu.add(beenden);
menuleiste.add(menu);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public void laden(){
chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
if (chooser.showOpenDialog(bildanzeige) ==
JFileChooser.APPROVE_OPTION){
dateiweg = chooser.getSelectedFiles();
if (dateiweg == null) {
return;
}
if(dateiweg.length>0)
name = dateiweg[0].getName();
}
bildBreite = bild.getWidth(bildanzeige);
bildHoehe = bild.getHeight(bildanzeige);
bild_x1 = x_pos;
bild_y1 = y_pos;
bild_x2 = bild_x1 + bildBreite;
bild_y2 = bild_y1 + bildHoehe;
bildanzeige.setSize(bildBreite,bildHoehe);
bildanzeige.repaint();
}
public static void main(String[] args){
fenster = new Bildbetrachter("Bildbetrachter");
fenster.setSize(1024,300);
fenster.pack();
fenster.setLocation(30,50);
fenster.setVisible(true);
}
class CBildLeinwand extends JPanel {
// Panel neu zeichnen
public void paintComponent(Graphics g) {
super.paintComponent(g);
// Falls ein Bild geladen ist, das Bild anzeigen
if(bild != null)
g.drawImage(bild,x_pos,y_pos,this);
}
public Dimension getMinimumSize() {
return fenster.getSize();
}
public Dimension getPreferredSize() {
return bildanzeige.getSize();
}
}
}
for(int i=0; i<files.length; i++){
int maxPics = 10; //sollte besser irgendwo von user abgefragt werden
for(int i=0; i<maxPics; i++){
kannst du bitte sagen wie wo und wozu du irgendetwas navigieren willst, was passt dir denn am JFileChooser nicht? Was willst du denn überhaupt erreichen?Gast_Anfänger hat gesagt.:aber es soll ja eine Navigation durch das Verzeichnis geben und wenn ich das so mache, kann ich nicht weiter navigieren.
kA... wie man mehrere bilder lädt kann man imho meinem beispiel durchaus entnehmen, wie man bilder zeichnet hast du anscheinend auch mitbekommen, wenn ich mir das mit "CDildLeinwand" anschaue, du kannst also alles mögliche laden und alles mögliche zeichnen, wo ist also dein problem?Das einzigste was ich möchte ist, dass mehr als ein Bild dargstellt wird. Was mit for richtig is, aber irgendwie stehe ich voll auf dem Schlauch und bekomme das Bsp. nicht in meinen Code integriert.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.IIOImage;
import javax.swing.text.*;
import java.awt.print.*;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import java.awt.Insets;
import java.io.File;
import javax.swing.JFileChooser;
import java.awt.Graphics2D;
import java.lang.Integer;
import java.awt.Dimension;
import javax.swing.JColorChooser;
import java.awt.*;
import java.awt.Color;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
public class Browser extends JFrame {
static Browser fenster;
Image[] bild;
int index = 0;
int x_pos,y_pos;
String name;
CBildLeinwand[] bildanzeige;
File[] dateiweg;
private JFileChooser chooser;
int bild_x1,bild_y1; // die aktuelle Begrenzung
int bild_x2,bild_y2; // des Bildes
int bildBreite,bildHoehe;
int anzahl = 3;
class ActionLauscher implements ActionListener {
public void actionPerformed(ActionEvent e) {
String Label;
Label = e.getActionCommand();
if (Label.equals("Objektbrowser")){
laden();
}
if (Label.equals("beenden"))
System.exit(0);
if(Label.equals("weiter")){
if(index > dateiweg.length-1) {
index = 0;
}
for(int i=0; i<bild.length;i++){
ImageIcon tmp = new ImageIcon(dateiweg[index].getAbsolutePath());
bild[i] = tmp.getImage();
bildanzeige[i].setImage(bild[i]);
index++;
}
}
if(Label.equals("zurück")){
if(index < 0) {
index = dateiweg.length-1;
}
for(int i=0; i<bild.length;i++){
ImageIcon tmp = new ImageIcon(dateiweg[index].getAbsolutePath());
bild[i] = tmp.getImage();
bildanzeige[i].setImage(bild[i]);
index--;
}
}
repaint();
}
}
Browser (String titel) {
super(titel);
x_pos = y_pos ;
bild_x1 = bild_x2 = bild_y1 = bild_y2;
name = null;
bild = null;
setLayout(new BorderLayout());
bildanzeige = new CBildLeinwand[anzahl];
bild = new Image[anzahl];
for(int i=0; i<bildanzeige.length;i++){
bildanzeige[i] = new CBildLeinwand();
}
for(CBildLeinwand d : bildanzeige){
d.setSize(300,300);
}
JPanel addBild = new JPanel();
addBild.setSize(1024,700);
for(CBildLeinwand d : bildanzeige){
addBild.add(d);
}
add(addBild,BorderLayout.NORTH);
for(CBildLeinwand d : bildanzeige){
d.setBackground(Color.white);
}
JPanel Button = new JPanel();
JButton weiter = new JButton("weiter");
JButton zurück = new JButton("zurück");
Button.add(zurück);
Button.add(weiter);
add(Button,BorderLayout.SOUTH);
weiter.addActionListener(new ActionLauscher());
zurück.addActionListener(new ActionLauscher());
JScrollPane listenScrollPane = new javax.swing.JScrollPane();
listenScrollPane.setViewportView(addBild);
add(listenScrollPane);
JMenuBar menuleiste = new JMenuBar();
setJMenuBar(menuleiste);
JMenu menu = new JMenu("Datei"); //menu erstellen
JMenuItem laden = new JMenuItem("Objektbrowser"); //Menubutton laden
laden.addActionListener(new ActionLauscher());
JMenuItem beenden = new JMenuItem("beenden");
beenden.addActionListener(new ActionLauscher());
menu.add(laden);
menu.add(beenden);
menuleiste.add(menu);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public void laden(){
chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
if (chooser.showOpenDialog(this) ==
JFileChooser.APPROVE_OPTION){
dateiweg = chooser.getSelectedFiles();
if (dateiweg == null) {
return;
}
if(dateiweg.length>0)
name = dateiweg[0].getName();
}
for(int i=0; i<bild.length;i++){
ImageIcon tmp = new ImageIcon(dateiweg[index].getAbsolutePath());
bild[i] = tmp.getImage();
bildanzeige[i].setImage(bild[i]);
index++;
}
for(int i=0; i<bildanzeige.length;i++){
bildBreite = bild[i].getWidth(bildanzeige[i]);
bildHoehe = bild[i].getHeight(bildanzeige[i]);
bild_x1 = x_pos;
bild_y1 = y_pos;
bild_x2 = bild_x1 + bildBreite;
bild_y2 = bild_y1 + bildHoehe;
bildanzeige[i].setSize(bildBreite,bildHoehe);
bildanzeige[i].repaint();
}
}
public static void main(String[] args){
fenster = new Browser("Bildbetrachter");
fenster.setSize(1024,300);
fenster.pack();
fenster.setLocation(30,50);
fenster.setVisible(true);
}
class CBildLeinwand extends JPanel {
Image bild;
// Panel neu zeichnen
public void paintComponent(Graphics g) {
super.paintComponent(g);
// Falls ein Bild geladen ist, das Bild anzeigen
if(bild != null)
g.drawImage(bild,x_pos,y_pos,this);
}
public void setImage(Image bild){
this.bild = bild;
}
public Dimension getMinimumSize() {
return fenster.getSize();
}
public Dimension getPreferredSize() {
return this.getSize();
}
}
}