Portal > Foren > Java > Desktop-Applikationen und Grafik > JFileChooser in Applet fehlerhaft
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 06.10.2008, 12:20 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 30.09.2008
Beiträge: 1
Standard JFileChooser in Applet fehlerhaft

Hallo erstmal.
Ich bin gerade dabei ein JavaApplet für einen Datei-Upload zu entwickeln, welches einen JFileChooser beinhaltet.
Nachdem ich mehrere Tutorials gelesen habe (bin halt ein Anfänger ) habe ich es sogar geschafft mein Applet zu signieren und einigermaßen zum laufen zu bringen.

Mein Problem ist jetzt, dass der JFileChooser Grafikfehler hat. Es scheint so als würde sich das Fenster, wo man die Dateien sieht nicht richtig aktualisieren. (Also wenn man einen anderen Ordner auswählt, werden trotzdem noch die Dateien aus dem vorigen Ordner angezeigt.)

Mir ist auch aufgefallen, dass das Problem bei bestimmten Ordnern öfter als bei anderen kommt. Bei dem "Meine Bilder" Ordner (in Windows unter Eigene Dateien) ist es besonders schlimm. Vieleicht weil es eine Verknüpfung ist?

Die Java-Konsole sagt dazu folgendes:

Exception occurred during event dispatching:
java.lang.NullPointerException
at javax.swing.plaf.basic.BasicListUI.updateLayoutSta te(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayo utState(Unknown Source)
at javax.swing.plaf.basic.BasicListUI.paintImpl(Unkno wn Source)
at javax.swing.plaf.basic.BasicListUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.BufferStrategyPaintManager.paint(Unkno wn Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unkno wn Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unkno wn Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Un known Source)
at javax.swing.SystemEventQueueUtilities$ComponentWor kRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
at java.awt.Dialog$1.run(Unknown Source)
at java.awt.Dialog$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Unknown Source)
at javax.swing.JFileChooser.showDialog(Unknown Source)
at javax.swing.JFileChooser.showOpenDialog(Unknown Source)
at UploadApplet$1.actionPerformed(UploadApplet.java:5 3)
at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source)
at javax.swing.AbstractButton$Handler.actionPerformed (Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent( Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


Mein Code sieht so aus:

Code:
import java.io.*;
import java.net.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.JApplet;
import javax.swing.JFileChooser;
import javax.swing.border.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.DefaultListModel;

public class UploadApplet extends JApplet {
    private static final long serialVersionUID = 1L;
    
// init() wird beim laden des applets gestartet
    public void init() {
        resize(640, 480);
        final DefaultListModel listModel;
        listModel = new DefaultListModel();
        final JList liste = new JList(listModel);
        final JLabel statustext = new JLabel( "", JLabel.CENTER );
        statustext.setFont( new Font("Serif", Font.PLAIN, 16) );
        statustext.setBounds(122, 425, 320, 23);
        JButton buttonupload = new JButton( "Dateien Uploaden" );
        buttonupload.setBounds(448, 425, 160, 23);
        JButton buttondateiminus = new JButton( "-" );
        buttondateiminus.setBounds(32, 425, 41, 23);
        JButton buttondateiplus = new JButton( "+" );
        buttondateiplus.setBounds(74, 425, 41, 23);  
        JScrollPane scrollpane1 = new JScrollPane(liste);
        scrollpane1.setBounds(32, 32, 576, 385);   
        scrollpane1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Liste hochzuladener Dateien:", TitledBorder.RIGHT, TitledBorder.TOP));
        final Frame f = new Frame ();
        Container content = getContentPane();
       // content.setBackground(Color.LIGHT_GRAY);
        content.setLayout( null );         
        listModel.addElement("- Keine Dateien gewählt -");        
        final File[] datei = null;
        buttondateiplus.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae)
            {
                statustext.setText("");
                JFileChooser chooser = new JFileChooser();
                chooser.setMultiSelectionEnabled(true);
                int option = chooser.showOpenDialog(UploadApplet.this);
                
                if(option == JFileChooser.APPROVE_OPTION)
                {
                    File[] sf = chooser.getSelectedFiles();
                    String filelist = "nothing";
                    
                    if(sf.length>0)
                    filelist = sf[0].getName();
                    
                    for(int i=1;i<sf.length;i++)
                    {
                    filelist += "," + sf[i].getName();
                    }
                    listModel.removeElement("- Keine Dateien gewählt -");
                    DefaultListModel listModel = (DefaultListModel)liste.getModel();
                    for(int i=0;i<sf.length;i++)
                    {
                        if(listModel.contains(sf[i])) {    
                        }
                        else {
                            listModel.addElement(sf[i]);
                        }
                    }
                }
                else
                {
                    System.out.println("Sie haben abgebrochen.");
                    //statustext.setText("Dateiauswahl abgebrochen");
                }
            }
           });
        buttondateiminus.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                statustext.setText("");
                int indexliste[] = liste.getSelectedIndices();        
                for (int i=indexliste.length-1; i>=0; i--) {
                listModel.removeElementAt(indexliste[i]);     
                }
                if (listModel.size()==0) {
                    listModel.addElement("- Keine Dateien gewählt -");
                }
                 };}
      );
        buttonupload.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                statustext.setText("");
                if (listModel.elementAt(0)!="- Keine Dateien gewählt -") {    
                    for (int i=0; i < listModel.size(); i++) {                        
                    try{
                        String hostname = "javaupload";
                        int port = 80;
                        InetAddress addr = InetAddress.getByName(hostname);
                        Socket socket = new Socket(addr, port);

                        // Send header
                        String path = "/upload.php";

                        // File To Upload
                        File theFile = new File(listModel.elementAt(i).toString());

                        System.out.println(addr.getHostAddress());
                        System.out.println ("size: " + (int) theFile.length());
                        DataInputStream fis = new DataInputStream(new BufferedInputStream(new
                        FileInputStream(theFile)));
                        byte[] theData = new byte[(int) theFile.length( )];

                        fis.readFully(theData);
                        fis.close();

                        DataOutputStream raw = new
                        DataOutputStream(socket.getOutputStream());
                        Writer wr = new OutputStreamWriter(raw);

                        String command =
                        "--dill\r\n"
                        + "Content-Disposition: form-data; name=\"uploadfile\"; filename=\""
                        + theFile.getName() + "\"\r\n"
                        + "Content-Type: text/xml\r\n"
                        + "\r\n";

                        String trail = "\r\n--dill--\r\n";

                        String header =
                        "POST "+path+" HTTP/1.0\r\n"
                        + "Accept: */*\r\n"
                        + "Referer: http://localhost\r\n"
                        + "Accept-Language: de\r\n"
                        + "Content-Type: multipart/form-data; boundary=dill\r\n"
                        + "User_Agent: TESTAGENT\r\n"
                        + "Host: javaupload\r\n"
                        + "Content-Length: " + ((int) theFile.length() + command.length() +
                        trail.length()) + "\r\n"
                        + "Connection: Keep-Alive\r\n"
                        + "Pragma: no-cache\r\n"
                        + "\r\n";

                        wr.write(header);
                        wr.write(command);

                        wr.flush();
                        raw.write(theData);
                        raw.flush( );
                        wr.write("\r\n--dill--\r\n");
                        wr.flush( );

                        BufferedReader rd = new BufferedReader(new
                        InputStreamReader(socket.getInputStream()));
                        String line;
                        while ((line = rd.readLine()) != null) {
                        System.out.println(line);
                        }
                        wr.close();
                        raw.close();

                        socket.close();
                        statustext.setText("Dateien hochgeladen.");
                        } catch (Exception f) { System.out.println(f.toString()); }
            }}
            else { 
                //System.out.println("Sie wollten uploaden, obwohl sie keine Dateien gewählt haben");
                statustext.setText("Fehler: Keine Dateien gewählt.");
                }}
        });
        //Erzeugen des GUIs:
        content.add(scrollpane1);
        content.add(buttondateiplus);
        content.add(buttonupload);      
        content.add(buttondateiminus);
        content.add(statustext);
    }
    }
Ich hoffe jemand von euch findet den Fehler, oder kann mir sonst irgendwie einen Tip geben, wie ich meine Dateiauswahl am besten umsetze.
Vielen Dank schon mal im Vorraus!!!

PS: SuFu hat mir nichts gebracht; wenn es das Thema schon gibt bitte ich um einen kleinen Hinweis und vielmals um Entschuldigung .
redder ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
applet , java , jfilechooser , nullpointerexception


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Java Applet soll Daten an ein PHP Script senden flanger Allgemeine Java-Programmierung 5 16.05.2007 16:52
applet wird nicht angezeigt function Desktop-Applikationen und Grafik 4 31.10.2005 12:48
Policy Datei für Applet konfigurieren bobcho Desktop-Applikationen und Grafik 14 28.06.2005 21:59
Applet korrekt einbinden bicpi Allgemeine Java-Programmierung 1 15.01.2005 06:13
2 Applet miteinander kommunizieren mr.no Allgemeine Java-Programmierung 3 23.11.2004 20:47


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45