Bilddatei mit Filechooser auswählen und anzeigen/impotieren

Status
Nicht offen für weitere Antworten.

Krisch

Mitglied
Hallo,

ich bin relativ unerfahren in der Programmierung mit Java und habe folgendes Problem:

Ich möchte in meine Applikation ein Bitmap einlesen. Dafür würde ich diese gern mit dem FileChooser auswählen und dann einlesen.

Danach soll die Bilddatei bearbeitbar (Filterung/Transformation) sein, also nicht über ImageIcon laden.

Bisher habe ich folgenden Quelltext "zusammengeschustert", aber das Bild wird nicht sichtbar!


Code:
final JFileChooser fc = new JFileChooser();	
		  int returnVal = fc.showOpenDialog(desk);
          if (returnVal == JFileChooser.APPROVE_OPTION) {
              File file = fc.getSelectedFile();
          try{
            FileImageInputStream in = new FileImageInputStream(fc.getSelectedFile()); 
			java.awt.image.BufferedImage bild = javax.imageio.ImageIO.read(in);
          }
          catch(IOException e) 
		       { 
		         e.printStackTrace();
		       }    
            }


Kann mir Jemand helfen?
 

André B.

Bekanntes Mitglied
Hobbit_Im_Blutrausch hat gesagt.:
ImageIO.read erwartet keinen Stream, sondern einfach nur eine Datei.
Is zwar umständlich aber eigentlich völlig korrekt: http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/ImageIO.html#read(javax.imageio.stream.ImageInputStream)
 

The_S

Top Contributor
:shock:

das is ja ma wirklich umständlich. OK, wieder was gelernt ;) .

back to topic: Wie zeigst du das Bild denn an? Wird eine Exception geworfen?
 

Krisch

Mitglied
Es ist korrekt?

aber warum ist dann in meinem Frame kein bild zu sehen?

oder habt ihr einen vorschlag wie es einfacher geht?!

exception werden nicht ausgeworfen....

ich bin ratlos....
 
G

Guest

Gast
ach ich muss es noch zusätzlich anzeigen?
ich dachte das macht der read befehl?
hm...
also muss ich noch einen tracker verwenden? oder was?
 

The_S

Top Contributor
lol, du kannst es z. B. in einem JLabel als ImageIcon anzeigen lassen oder die paintComponent Methode einer Swing-Komponente deiner Wahl überschreiben um es anzeigen zu lassen.
 

Krisch

Mitglied
ich weiß echt nicht was ich falsch mache....

es wird trotzdem kein bild angezeigt!

vielleicht sollte ich es komplett anders aufziehen!?
 

The_S

Top Contributor
keine Ahnung, wie ziehst du es denn auf? Bzw. poste doch mal deinen Code wie du das Bild darstellst. Wäre doch gelacht, wenn wir den Fehler nicht finden :D
 

Krisch

Mitglied
also hier ist der gesamte Quellcode:

Code:
package gui;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageInputStream;
import javax.swing.*;



public class DesktopFrame		//Desktopmanager
extends JFrame implements ActionListener
{
  private JDesktopPane desk;
  private Image bild;

  public DesktopFrame()
  {
    super("DesktopFrame");
    this.desk = new JDesktopPane();
    desk.setDesktopManager(new DefaultDesktopManager());
    setContentPane(desk);
    addWindowListener(new WindowClosingAdapter(true));
    JMenuBar menubar = new JMenuBar();
    menubar.add(menua());
    menubar.add(menub());
    menubar.add(menuc());
    setJMenuBar(menubar);
    
  }

  public void addChild(JInternalFrame child, int x, int y)		//ruft die Kinderfenster auf
  {
    child.setLocation(x, y);
    child.setSize(200, 150);
    child.setDefaultCloseOperation(
      JInternalFrame.DISPOSE_ON_CLOSE
    );
    desk.add(child);
    child.setVisible(true);
  }
  
  
  
  public void actionPerformed(ActionEvent event)
  {
	  String cmd = event.getActionCommand();
	  if (cmd.equals("Beenden")){
		  setVisible(false);
		  dispose();
		  System.exit(0);
	  }
	  if (cmd.equals("Neu")){							//Methode um ein neues Fenster zu öffnen
		  setVisible(false);
		  dispose();
		  DesktopFrame desktop = new DesktopFrame();
		  desktop.setLocation(100, 100);
		  desktop.setSize(800, 800);
		  desktop.setVisible(true);
		  
	  }
	  if (cmd.equals("Aus Datei")){
		  //Image bild;
		  File file;
		  final JFileChooser fc = new JFileChooser();	//öffnet einen FileChooser
		  int returnVal = fc.showOpenDialog(desk);
          if (returnVal == JFileChooser.APPROVE_OPTION) {
  
            FileImageInputStream in = new FileImageInputStream(fc.getSelectedFile()); 
			java.awt.image.BufferedImage bild = javax.imageio.ImageIO.read(in);
	  
			
  		}
  }
	  }
  public void paintComponent(Graphics g) {	
		g.drawImage(bild,1,1,this);



  public JMenu menua()
  {
    JMenu datei = new JMenu("Programm");			//Programmmenü
    datei.setMnemonic('D');
    JMenuItem mi;
    //Öffnen
    mi = new JMenuItem("Neu", 'f');
    setCtrlAccelerator(mi, 'O');
    mi.addActionListener(this);
    datei.add(mi);
    mi.setToolTipText("Hier können Sie ein neues Projekt starten");
   
    //Speichern
    mi = new JMenuItem("Speichern", 'p');
    setCtrlAccelerator(mi, 'S');
    mi.addActionListener(this);
    datei.add(mi);
    //Separator
    datei.addSeparator();
    //Beenden
    mi = new JMenuItem("Beenden", 'e');
    setCtrlAccelerator(mi, 'B');
    mi.addActionListener(this);
    mi.setToolTipText("Hier beenden Sie die Applikation");
    datei.add(mi);
    return datei;
    
  }
  
  private JMenu menub()
  {
    JMenu datei = new JMenu("Import");			//Importmenü
    datei.setMnemonic('D');
    JMenuItem mi;
    //Öffnen
    mi = new JMenuItem("Aus Datei", 'd');
    setCtrlAccelerator(mi, 'A');
    mi.addActionListener(this);
    datei.add(mi);
    
    //Speichern
    mi = new JMenuItem("URL", 'u');
    setCtrlAccelerator(mi, 'U');
    mi.addActionListener(this);
    datei.add(mi);
    //Separator
    datei.addSeparator();
    //Beenden
    mi = new JMenuItem("Beenden", 'e');
    setCtrlAccelerator(mi, 'B');
    mi.addActionListener(this);
    datei.add(mi);
    return datei;
  }
  
  
  
  private JMenu menuc()
  {
    JMenu datei = new JMenu("Menü C");			//Dateimenü
    datei.setMnemonic('D');
    JMenuItem mi;
    //Öffnen
    mi = new JMenuItem("Öffnen", 'f');
    setCtrlAccelerator(mi, 'O');
    mi.addActionListener(this);
    datei.add(mi);
    //Speichern
    mi = new JMenuItem("Speichern", 'p');
    setCtrlAccelerator(mi, 'S');
    mi.addActionListener(this);
    datei.add(mi);
    //Separator
    datei.addSeparator();
    //Beenden
    mi = new JMenuItem("Beenden", 'e');
    setCtrlAccelerator(mi, 'B');
    mi.addActionListener(this);
    datei.add(mi);
    return datei;
  }
  

  
  private void setCtrlAccelerator(JMenuItem mi, char acc)
  {
    KeyStroke ks = KeyStroke.getKeyStroke(
      acc, Event.CTRL_MASK
    );
    mi.setAccelerator(ks);
  }
}



also das wäre mein frame!?

ach ich weiß auch nicht...

3 Tage versuche ich jetzt schon weiter zu kommen...[/quote]
 

The_S

Top Contributor
In Zeile 77 ist ein } zuviel, was in Zeile 80 fehlt.

Ein JFrame hat keine paintComponent sondern nur eine paint MEthode. Bennen die mal um.
 

The_S

Top Contributor
sry, dass in Zeile 77 passt, war nur ungünstig formatiert. in Zeile 80 brauchste trotzdem noch eines.
 

Krisch

Mitglied
also jetzt kommen keine Fehlermeldung mehr, ABER es erscheint immernoch kein Bild!

hab ich noch irgendetwas vergessen?
 

The_S

Top Contributor
Code:
import javax.swing.*;
import java.awt.*;
import javax.imageio.*;
import java.io.*;
import java.awt.image.*;

public class BildTest extends JFrame {
	
	private BufferedImage image = null;
	
	public BildTest() {
		
		try {
			image = ImageIO.read(new File("C:/Bilder/Login-Icons/ist1_784326_pajaro_tribal.jpg"));
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void paint(Graphics g) {
		g.drawImage(image, 50, 50, null);
	}
	
	public static void main(String[] args) {
		BildTest bt = new BildTest();
		bt.setSize(500, 400);
		bt.setVisible(true);
	}
}

Also das klappt bei mir wunderbar.
 
G

Guest

Gast
Krisch hat gesagt.:
also hier ist der gesamte Quellcode:

Code:
package gui;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageInputStream;
import javax.swing.*;



public class DesktopFrame		//Desktopmanager
extends JFrame implements ActionListener
{
  private JDesktopPane desk;
  private Image bild;

  public DesktopFrame()
  {
    super("DesktopFrame");
    this.desk = new JDesktopPane();
    desk.setDesktopManager(new DefaultDesktopManager());
    setContentPane(desk);
    addWindowListener(new WindowClosingAdapter(true));
    JMenuBar menubar = new JMenuBar();
    menubar.add(menua());
    menubar.add(menub());
    menubar.add(menuc());
    setJMenuBar(menubar);
    
  }

  public void addChild(JInternalFrame child, int x, int y)		//ruft die Kinderfenster auf
  {
    child.setLocation(x, y);
    child.setSize(200, 150);
    child.setDefaultCloseOperation(
      JInternalFrame.DISPOSE_ON_CLOSE
    );
    desk.add(child);
    child.setVisible(true);
  }
  
  
  
  public void actionPerformed(ActionEvent event)
  {
	  String cmd = event.getActionCommand();
	  if (cmd.equals("Beenden")){
		  setVisible(false);
		  dispose();
		  System.exit(0);
	  }
	  if (cmd.equals("Neu")){							//Methode um ein neues Fenster zu öffnen
		  setVisible(false);
		  dispose();
		  DesktopFrame desktop = new DesktopFrame();
		  desktop.setLocation(100, 100);
		  desktop.setSize(800, 800);
		  desktop.setVisible(true);
		  
	  }
	  if (cmd.equals("Aus Datei")){
		  //Image bild;
		  File file;
		  final JFileChooser fc = new JFileChooser();	//öffnet einen FileChooser
		  int returnVal = fc.showOpenDialog(desk);
          if (returnVal == JFileChooser.APPROVE_OPTION) {
  
            FileImageInputStream in = new FileImageInputStream(fc.getSelectedFile()); 
			java.awt.image.BufferedImage bild = javax.imageio.ImageIO.read(in);
	  
			
  		}
  }
	  }
  public void paintComponent(Graphics g) {	
		g.drawImage(bild,1,1,this);



  public JMenu menua()
  {
    JMenu datei = new JMenu("Programm");			//Programmmenü
    datei.setMnemonic('D');
    JMenuItem mi;
    //Öffnen
    mi = new JMenuItem("Neu", 'f');
    setCtrlAccelerator(mi, 'O');
    mi.addActionListener(this);
    datei.add(mi);
    mi.setToolTipText("Hier können Sie ein neues Projekt starten");
   
    //Speichern
    mi = new JMenuItem("Speichern", 'p');
    setCtrlAccelerator(mi, 'S');
    mi.addActionListener(this);
    datei.add(mi);
    //Separator
    datei.addSeparator();
    //Beenden
    mi = new JMenuItem("Beenden", 'e');
    setCtrlAccelerator(mi, 'B');
    mi.addActionListener(this);
    mi.setToolTipText("Hier beenden Sie die Applikation");
    datei.add(mi);
    return datei;
    
  }
  
  private JMenu menub()
  {
    JMenu datei = new JMenu("Import");			//Importmenü
    datei.setMnemonic('D');
    JMenuItem mi;
    //Öffnen
    mi = new JMenuItem("Aus Datei", 'd');
    setCtrlAccelerator(mi, 'A');
    mi.addActionListener(this);
    datei.add(mi);
    
    //Speichern
    mi = new JMenuItem("URL", 'u');
    setCtrlAccelerator(mi, 'U');
    mi.addActionListener(this);
    datei.add(mi);
    //Separator
    datei.addSeparator();
    //Beenden
    mi = new JMenuItem("Beenden", 'e');
    setCtrlAccelerator(mi, 'B');
    mi.addActionListener(this);
    datei.add(mi);
    return datei;
  }
  
  
  
  private JMenu menuc()
  {
    JMenu datei = new JMenu("Menü C");			//Dateimenü
    datei.setMnemonic('D');
    JMenuItem mi;
    //Öffnen
    mi = new JMenuItem("Öffnen", 'f');
    setCtrlAccelerator(mi, 'O');
    mi.addActionListener(this);
    datei.add(mi);
    //Speichern
    mi = new JMenuItem("Speichern", 'p');
    setCtrlAccelerator(mi, 'S');
    mi.addActionListener(this);
    datei.add(mi);
    //Separator
    datei.addSeparator();
    //Beenden
    mi = new JMenuItem("Beenden", 'e');
    setCtrlAccelerator(mi, 'B');
    mi.addActionListener(this);
    datei.add(mi);
    return datei;
  }
  

  
  private void setCtrlAccelerator(JMenuItem mi, char acc)
  {
    KeyStroke ks = KeyStroke.getKeyStroke(
      acc, Event.CTRL_MASK
    );
    mi.setAccelerator(ks);
  }
}



also das wäre mein frame!?

ach ich weiß auch nicht...

3 Tage versuche ich jetzt schon weiter zu kommen...
[/quote]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Bilddatei exportieren AWT, Swing, JavaFX & SWT 0
S Bilddatei kopieren, aber ohne verluste und ohne zu großen Speicherverbrauch AWT, Swing, JavaFX & SWT 17
S Java weigert sich Bilddatei zu verarbeitet -.- AWT, Swing, JavaFX & SWT 2
B Problem bei der Erstellung einer Bilddatei aus einem JPanel AWT, Swing, JavaFX & SWT 16
T Fehlermeldungen bei Cancel FileChooser AWT, Swing, JavaFX & SWT 7
Bluedaishi FileChooser.ExtensionFilter AWT, Swing, JavaFX & SWT 4
C FileChooser Save-Dialog zeigt Files nicht an AWT, Swing, JavaFX & SWT 3
GenerationLost JavaFX FileChooser speichern ohne Zieldatei? AWT, Swing, JavaFX & SWT 12
N Swing Filechooser zweifarbig machen AWT, Swing, JavaFX & SWT 33
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B FileChooser anpassen AWT, Swing, JavaFX & SWT 2
D Swing FileChooser mit einem neuen Rootordner AWT, Swing, JavaFX & SWT 6
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
N FileWriter mit FileChooser AWT, Swing, JavaFX & SWT 3
D Swing JOptionPane + FileChooser .. Reihenfolge wichtig!? AWT, Swing, JavaFX & SWT 7
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
kodela FileChooser mit "absolutem" Root-Verzeichnis öffnen AWT, Swing, JavaFX & SWT 2
L Filechooser File Öffnen AWT, Swing, JavaFX & SWT 4
N FileChooser in View AWT, Swing, JavaFX & SWT 3
E Swing filechooser - nur Netzwerkpfade anzeigen lassen AWT, Swing, JavaFX & SWT 14
H FileChooser und Filter AWT, Swing, JavaFX & SWT 4
F Problem mit Mehrfachauswahl bei Filechooser AWT, Swing, JavaFX & SWT 2
G Fragen zum FileChooser AWT, Swing, JavaFX & SWT 5
G FileChooser Bild Speichern AWT, Swing, JavaFX & SWT 3
G FileChooser AWT, Swing, JavaFX & SWT 5
R filechooser soll sich das Verzeichnis merken AWT, Swing, JavaFX & SWT 2
G FileChooser - Größe (Dimension) ändern AWT, Swing, JavaFX & SWT 2
V System Look and Feel, FileChooser, Optionen einer jar-Datei AWT, Swing, JavaFX & SWT 10
M bei filechooser.showSaveDialog(null); auf Datein. zugreifen AWT, Swing, JavaFX & SWT 2
U FileChooser Layout - Threads? AWT, Swing, JavaFX & SWT 17
D FileChooser der anderen Art. AWT, Swing, JavaFX & SWT 2
C falsche Pfadangabe bei FileChooser AWT, Swing, JavaFX & SWT 7
W Vorschau mit FileChooser: Ereignis bei Datei ausgewählt? AWT, Swing, JavaFX & SWT 4
H FileChooser AWT, Swing, JavaFX & SWT 5
G Linie mit der Maus auswählen AWT, Swing, JavaFX & SWT 5
M JavaFX Tab auswählen mit JavaFX AWT, Swing, JavaFX & SWT 9
B JavaFX JavaFX Table gespeichertes Wert auswählen/anvisieren AWT, Swing, JavaFX & SWT 3
L ComboBox Wert automatisch auswählen AWT, Swing, JavaFX & SWT 6
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
C JComboBox Objecte übergeben und Eintrag auswählen AWT, Swing, JavaFX & SWT 3
domjos1994 JavaFX Element auswählen auf dem der Cursor ist AWT, Swing, JavaFX & SWT 1
S Pfad für Speichervorgang auswählen AWT, Swing, JavaFX & SWT 11
E JavaFX TableView mit Rechtsklick Zelle auswählen AWT, Swing, JavaFX & SWT 8
W Bei Programmstart jRadioButton automatisch auswählen AWT, Swing, JavaFX & SWT 2
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
T JTree - Elemente mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 6
H Swing Element aus JComboBox auswählen AWT, Swing, JavaFX & SWT 2
S Swing Ordner im JFileChooser auswählen AWT, Swing, JavaFX & SWT 2
N Speicherpfad für Datei auswählen AWT, Swing, JavaFX & SWT 2
F Swing ArrayList in JList anzeigen und Objekte auswählen AWT, Swing, JavaFX & SWT 2
P Swing RadioButtons - nur einen auswählen AWT, Swing, JavaFX & SWT 3
propra Auf einem JPanel gezeichnete Linie auswählen AWT, Swing, JavaFX & SWT 3
M gleiches Element in JList mehrmals hintereinander auswählen AWT, Swing, JavaFX & SWT 6
Dit_ JTextField | Text auswählen und Caret setzen AWT, Swing, JavaFX & SWT 7
H Swing jTable Zeitspanne auswählen AWT, Swing, JavaFX & SWT 3
Landei Swing JTree - Element mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 4
M Swing jcombobox als jtable-editor: neues Item auswählen AWT, Swing, JavaFX & SWT 4
R JFileChooser - Initiales Verzeichnis auswählen AWT, Swing, JavaFX & SWT 8
N Mit JFileChooser ein Verzeichnis auswählen AWT, Swing, JavaFX & SWT 7
S [gelöst] API zum bequemen Navigieren und Auswählen von Ordnern AWT, Swing, JavaFX & SWT 3
N Defaulttext per Mausklick auswählen AWT, Swing, JavaFX & SWT 4
R Zahl aus Zahlenbereich auswählen AWT, Swing, JavaFX & SWT 9
T einzelne Zelle einer JTable auswählen und Hintergrundfarbe ändern AWT, Swing, JavaFX & SWT 2
D JTree programmtechnisch mehrere Nodes auswählen. AWT, Swing, JavaFX & SWT 2
N JCalendar - Kein Datum auswählen AWT, Swing, JavaFX & SWT 3
S JTable Reihe auswählen AWT, Swing, JavaFX & SWT 2
S Welches Event beim auswählen einer Zelle? [JTable] AWT, Swing, JavaFX & SWT 3
A JTable zeile auswählen AWT, Swing, JavaFX & SWT 2
K Zeilen von TextArea auswählen AWT, Swing, JavaFX & SWT 3
B JComboBox Item auswählen AWT, Swing, JavaFX & SWT 11
A jtextarea -> ganze zeile auswählen AWT, Swing, JavaFX & SWT 5
H Noch einmal JList (nichts auswählen) AWT, Swing, JavaFX & SWT 2
P JSpinner Objekt anstatt Zahlen sollen man Namen auswählen AWT, Swing, JavaFX & SWT 2
J JList-Item ind JTable-Zelle auswählen. AWT, Swing, JavaFX & SWT 5
F JTree Letzte Node auswählen AWT, Swing, JavaFX & SWT 8
D "Datei auswählen" Fenster AWT, Swing, JavaFX & SWT 5
G [AWT] Zeichnungen per Maus auswählen AWT, Swing, JavaFX & SWT 8
R JTable: nur eine Zeile auswählen AWT, Swing, JavaFX & SWT 2
T Zeile in JTable mit Doppelklick auswählen AWT, Swing, JavaFX & SWT 8
F Tree-Knoten programmgesteuert auswählen AWT, Swing, JavaFX & SWT 3
K Farbverlauf -> Farbe auswählen mit Regler || JTable Selec AWT, Swing, JavaFX & SWT 5
G für showInputDialog kein eigenes Icon auswählen AWT, Swing, JavaFX & SWT 6
bernd Aus einem JTextArea einen Eintrag auswählen AWT, Swing, JavaFX & SWT 11
P Inhalt von JTextField beim Auswählen markieren AWT, Swing, JavaFX & SWT 7
M Grafikobjekte mit Mouse auswählen und verschieben AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben