Java Applet Bild ins Programm laden

Blackscreen

Grünschnabel
hi java coder!

ich habe folgendes Problem ich lerne Java schon seit 2 jahren in da schule und jetzt haben wir mit Applets begonnen.

Nun möchte ich in ein Applett einbauen das der Benutzer ein Bild auswählen kann und das das Bild dann links im Programm angezeigt wird ich verwende ein GridLayout in einem BorderLayout.

Das der Benutzer die datei auswählen kann habe ich schon hinbekommen aber weiter weis ich leider nicht mehr

das ist meine loadFile methode:
Code:
public  String loadFile (String fileType){
		fd = new FileDialog(new Frame(), "Bitte auswählen:", FileDialog.LOAD);
		fd.setFile(fileType);
		fd.setDirectory(".");
		fd.show();
		return fd.getDirectory() + fd.getFile();
		}

und der Button wenn man auf ihn klickt schaut so aus
Code:
bild = new Button("datei auswählen...");
		bild.addActionListener(new Buttons());

ActionListener

Code:
public void actionPerformed (ActionEvent a) {    
        	if((bild ==  a.getSource()) ){
        	 fileDir = loadFile("*jpg");
        	}
        	}

ich hoffe ihr könnt mir helfen!
:)

mfg Blackscreen
 
Mit Applets kannst du normalerweise nicht auf die Festplatte des Nutzers zugreifen, außer du lässt dein Applet signieren.

Normalerweise kannst du die Bilder in ein ImageIcon laden, also so:
Java:
ImageIcon bild = new ImageIcon(fd.getFile());
Dieses ImageIcon kannst du dann z.B. zu einem JLabel hinzufügen. Mehr dazu unter http://openbook.galileocomputing.de...19_005.htm#mjf840b5b26b3d17378f356327ff528f45

Allerdings ist ImageIcon ein Swing-Component. Es ist aber sowieso ratsam, auf Swing umzusteigen. Die meisten Swing-Klassen heißen so wie die AWT-Klassen, nur mit einem 'J' davor, z.B.:
AWT / Swing
Button / JButton
Panel / JPanel
Component / JComponent
FileDialog / JFileChooser


2. Möglichkeit (wenn du auf Swing verzichten musst/willst oder das Bild bearbeiten bzw. resizen willst), dieser Weg ist deutlich aufwändiger:
Du erzeugst ein BufferedImage (!! in einen try-catch-Block einschließen!)
Java:
BufferedImage image = ImageIO.read(new File(fd.getFile()));
Dann musst du noch eine Klasse schreiben, die von einem AWT-Componenten erbt und in der Methode paint() mit Graphics.drawImage() das Bild malt. siehe: http://openbook.galileocomputing.de/javainsel9/javainsel_20_006.htm
 
Wie gnodeftest schon sagte : wenn dein Applet nicht signiert ist kann es auch nicht auf deine Platten zugreifen *sog. Sandbox für Applets*.
Wenn du jetzt mit Swing arbeiten willst musst du schon den Root-Container von Swing verwenden, also halt nicht Applet sondern JApplet.
Und auch deine setDirectory-Anweisung ist sehr komisch. Signier dein Applet mal und probier es aus : du wirst sehen das du in irgend einem Unterverzeichnis für TEMP-Daten landest. Besser wäre hier ein System.getPropery("user.home"); das den User erstmal in seine "Eigenen Dateien" leitet.

Und was halt die Arbeit mit Swing angeht : du kannst natürlich nicht einfach vor alles einfach so ein großes J klatschen, du musst dir die äquivalenten Methoden raussuchen, also z.b. statt FileDialog JFileChooser *es gibt noch n paar mehr solcher klassen*
Ein weiterer Unterschied von AWT zu Swing ist das sämtliche Klassen von JComponent abgeleitet sind. Desshalb kannst du auch in einem geringen Maße mit allen Klassen gleich umgehen *gut, man kann nun einem JLabel keinen ActionListener anhängen ... aber fast alles andere*.

Am besten wäre es wenn du dein Applet so entwickelst das es halt erstmal als nomale Applikation voll funktionstüchtig is und baust es dann zu einem Applet um *z.b. in dem du den Inhalt der main-Methode in die start-methode packst*.
Wenn du dann noch Dinge tun willst die Applet normalerweise verboten sind *also z.b. File-Zugriff , Sockets zu einem anderem Server als dem Heimat-Server *Server von dem das Applet geladen wurde** dann musst du es noch signieren.
Dazu gibt es von Sun ein super Tutorial : http://download.oracle.com/javase/tutorial/deployment/jar/signindex.html
*erfordert halt das das Applet in einem Jar verpackt ist*
 
Zurück