Anzeige:
Ergebnis 1 bis 9 von 9

Thema: fenster schließt nicht ..

  1. #1
    Registrierter Benutzer
    Registriert seit
    27.07.2000
    Beiträge
    123

    fenster schließt nicht ..

    hi,

    vor einigen Jahren hatte ich mal kurz etwas mit Java zu tun. Nun bin ich gerade dabei ein wenig damit herumzuspielen.

    Das Codebeispiel soll ein Fenster erstellen, dass durch ein Klick auf das Feld "x" sich wieder schliessen läßt.

    Code:
    import javax.swing.*;
    
    public class Test {
            public static void main (String args[]) {
                    JFrame F=new JFrame("Test Frame");
                    F.setSize(300,300);
                    F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    F.setVisible(true);
    //                System.exit(0);
            }
    }
    leider will das aber nicht so ...
    Es kommt keine Fehlermeldung, Warnung oder ähnliches. Mit "System.exit(0);" wird das ganze ordentlich beendet, aber das Fenster wartet natürlich nicht bis ich es schliesse ;-).

    grüße

    Reinhard

  2. #2
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Das war nur die halbe Miete. Du musst dem Ehemann, äh, dem Java sagen, dass es das Fenster zumachen soll, wenn er geht:

    Code:
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Näheres dazu hier:
    http://java.sun.com/j2se/1.3/docs/ap...ng/JFrame.html

    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

  3. #3
    Registrierter Benutzer
    Registriert seit
    27.07.2000
    Beiträge
    123
    hi BlueJay,

    mmmhh finde ich ein wenig dürftig die info, fast so schlimm wie meine ;-).
    Laut Doku wird bei der Swing Klasse der Eventhandler automatisch gestartet, bei der awt - Klasse nicht. Das heißt es müsste reichen dem Handler zu sagen was er machen soll. Das ganze übernimmt imho die Funktion :
    Code:
    F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    da hilft mir auch der Verweiss in die Doku von 1.3 nicht viel, da ich das problem mit dem gcj 1.5, aber nicht mit der jdk von sun habe. Die Lösung war in diesem Fall für
    die console: umbiegen der Pfade in /etc/alternativ/

    bzw. in eclipse das hinzufügen der jre von sun

    das ganze funktioniert also erst mal, ist aber imho ziemlich unbefriedigend ...
    wenn also jemand noch zufällig ein paar weitergehende infos hat oder noch ein paar Details zu BlueJay's info hinzufügt, dass ich das ganze auch verstehe ;-)

    grüße

    Reinhard

  4. #4
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Oh, sorry, bei "import javax.swing" habe ich in meiner Beschränktheit doch glatt angenommen, dass du mit dieser Bibliothek arbeiten wolltest. Dann hätte der Einzeiler als Ergänzung voll gereicht, und der Link war noch ein bisschen zum Schmökern.

    Zum GCJ fragst du aber am besten peschmae, ich weiss nur, dass die wohl das mit dem awt, geschweige denn swing, nicht auf die Reihe kriegen.
    Eigentlich ganz einfach, wenn man's weiss!

  5. #5
    Registrierter Benutzer
    Registriert seit
    27.07.2000
    Beiträge
    123
    hi,

    jetzt müßte ich dich ein wenig mehr kennen um mit dem ersten Abschnitt etwas besser klar kömmen zu können ;-), imho hatte ich den einzeiler doch drin????
    Zitat Zitat von BlueJay Beitrag anzeigen
    Oh, sorry, bei "import javax.swing" habe ich in meiner Beschränktheit doch glatt angenommen, dass du mit dieser Bibliothek arbeiten wolltest. Dann hätte der Einzeiler als Ergänzung voll gereicht, und der Link war noch ein bisschen zum Schmökern.

    Zum GCJ fragst du aber am besten peschmae, ich weiss nur, dass die wohl das mit dem awt, geschweige denn swing, nicht auf die Reihe kriegen.
    gut das ist ne info ;-) mal schauen ob er hier von alleine mal vorbeischaut oder ob ich es erst mal darauf beruhen lasse, dass ich jetzt weiss, wen ich nerven kann, wenn mir mal wieder etwas spanisch vor kommt ;-)

    grüße

  6. #6
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Also GCJ 1.5 gibts nicht wirklich.

    Habs mal schnell durch GCJ 4.3 gelassen (der Debiansche CVS Snapshot vom 2.2.08). Da tritt dein Problem auch auf.

    Was aber weiterhin funktioniert ist die Alternativvariante aus den grauen Vorzeiten, als es noch kein Java 1.3 gab:
    Code:
    import javax.swing.*;
    import java.awt.event.*;
    
    public class Test {
            public static void main (String args[]) {
                    JFrame F=new JFrame("Test Frame");
                    F.setSize(300,300);
                                    F.addWindowListener(new WindowAdapter() {
                                            public void windowClosing(WindowEvent e) {
                                                            System.exit(0);
                                            }
                                    });
                    F.setVisible(true);
            }
    }
    Dein Beispiel illustriert ganz gut wie man auch heute noch vorgehen muss, wenn man ein Java-Programm schreiben will das mit Classpath (den auch GCJ verwendet) kompatibel ist:
    Nicht erst das Programm unter der Verwendung von Sun-Java schreiben und erwarten dass dann einfach alles gleich läuft. Sondern vielmehr und besser das Programm unter Verwendung von Classpath schreiben und testen; dann läufts fast garantiert auch mit Suns Java problemlos.

    Mittelfristig ist allerdings durchaus Hoffnung vorhanden - dank Suns GPL-Freigabe grosser Teile der Klassenbibliothek und Projekten wie IcedTea... - aber das dauert halt ein Weilchen. Ist ja auch gross, die Bibliothek.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  7. #7
    Registrierter Benutzer
    Registriert seit
    27.07.2000
    Beiträge
    123
    Hi,

    Zitat Zitat von peschmae Beitrag anzeigen
    Also GCJ 1.5 gibts nicht wirklich.

    Habs mal schnell durch GCJ 4.3 gelassen (der Debiansche CVS Snapshot vom 2.2.08). Da tritt dein Problem auch auf.
    jup die Formulierung war alles andere als zutreffend ;-)
    und bei mir ist der gcj 4.3 installiert ..

    Zitat Zitat von peschmae Beitrag anzeigen

    Was aber weiterhin funktioniert ist die Alternativvariante aus den grauen Vorzeiten, als es noch kein Java 1.3 gab:
    Code:
    import javax.swing.*;
    import java.awt.event.*;
    
    public class Test {
            public static void main (String args[]) {
                    JFrame F=new JFrame("Test Frame");
                    F.setSize(300,300);
                                    F.addWindowListener(new WindowAdapter() {
                                            public void windowClosing(WindowEvent e) {
                                                            System.exit(0);
                                            }
                                    });
                    F.setVisible(true);
            }
    }
    Danke für das Beispiel. Also einfach nicht davon ausgehen, dass JFrame den Handler automatisch hinzufügt ...

    Zitat Zitat von peschmae Beitrag anzeigen

    Dein Beispiel illustriert ganz gut wie man auch heute noch vorgehen muss, wenn man ein Java-Programm schreiben will das mit Classpath (den auch GCJ verwendet) kompatibel ist:
    Nicht erst das Programm unter der Verwendung von Sun-Java schreiben und erwarten dass dann einfach alles gleich läuft. Sondern vielmehr und besser das Programm unter Verwendung von Classpath schreiben und testen; dann läufts fast garantiert auch mit Suns Java problemlos.

    Mittelfristig ist allerdings durchaus Hoffnung vorhanden - dank Suns GPL-Freigabe grosser Teile der Klassenbibliothek und Projekten wie IcedTea... - aber das dauert halt ein Weilchen. Ist ja auch gross, die Bibliothek.

    MfG Peschmä
    mmm ein paar Sachen muss ich mir mal wohl erst noch aneignen ... Aber gut ich weiss jetzt dass ich diesbezüglich einfach immer wieder mal mit Problemen zu rechnen habe. Alles weitere ergibt sich dann.

    Grüße und Danke

  8. #8
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Zitat Zitat von pucki Beitrag anzeigen
    Also einfach nicht davon ausgehen, dass JFrame den Handler automatisch hinzufügt ...
    Automatisch tuts das sowieso nicht
    Du musst ja auch bei Sun ein
    Code:
    F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    einfügen. Ist halt nur dass bei der Classpath-Version die bei GCJ 4.3 dabei ist offenbar die F.setDefaultCloseOperation-Methode nicht implementiert ist.

    Was mich allerdings doch etwas verwundert. Sonderlich schwer ist die ja nicht zu erstellen und benutzt wird sie doch recht oft. Naja

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  9. #9
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von pucki Beitrag anzeigen
    hi,
    jetzt müßte ich dich ein wenig mehr kennen um mit dem ersten Abschnitt etwas besser klar kömmen zu können ;-), imho hatte ich den einzeiler doch drin????
    Konqueror spielt mir cachemäßig schon mal einen Streich:
    In der Version, die ich gestern zu Gesicht bekam, war sie nicht drin, und das System.exit(0) war aktiv. Von daher lief alles, wie erwartet.

    IMHO gehört beides rein.

    Und von den Java-Versionen kenne ich nur Sun und blackdown.
    Geändert von BlueJay (16-02-2008 um 16:50 Uhr)
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •