Zu den Aufzeichnungen der tutorials.de-Live-Workshops
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1282
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MikaM MikaM ist offline Mitglied Bronze
    Registriert seit
    Nov 2008
    Beiträge
    31
    Hallo User,

    ich habe folgendes Problem. Ich möchte verhindern, das ein JFrame mehrmals nach Buttonclick geöffnet werden kann. Anbei ein Stück Programmcode. Wo liegt mein Denkfehler oder falsche Arbeitsweise? Für Eure Antworten vielen Dank!! Gruß Mika


    void jButton1_mouseClicked(MouseEvent e)
    {
    if (e.getClickCount() == 1)
    {
    FrameKond f = new FrameKond();
    if (!f.isShowing()) // geht nicht
    {
    f.setUndecorated(true);
    f.setSize(dim.width, dim.height);
    f..setLocation(0, 0);
    f..setVisible(true);
    }
    }
    }
     

  2. #2
    Avatar von hammet
    hammet hammet ist offline himekishi
    Registriert seit
    Aug 2006
    Ort
    Bayern
    Beiträge
    334
    Hallo MikaM,
    benutze doch bitte für geposteten Code die [.JAVA][./Java] Tags (ohne Punkte) um den Code leserlicher zu gestalten.

    Nun zu deinem Problem. Deine Idee ist schon richtig. Das Problem ist allerdings dieser Zeile:
    Code java:
    1
    
    FrameKond f = new FrameKond();
    Du erstellst bei jedem Methodenaufruf ein neues Fenster, deine nachfolgende Abfrage kann also nu "true" zurückliefern. Du könntest dein Fenster global deklarieren und beim Schließen des Fensters die "dispose()"-Methode aufrufen.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    FrameKond f = new FrameKond();
     
    void jButton1_mouseClicked(MouseEvent e)
    {
    if (e.getClickCount() == 1)
    {
    if (!f.isShowing()) // geht nicht
    {
    f.setUndecorated(true);
    f.setSize(dim.width, dim.height);
    f..setLocation(0, 0);
    f..setVisible(true);
    }
    }
    }

    Und dann bei deinem Fenster mit einem WindowListener (ist allerdings dir überlassen) einfahc die Methode "dispose()" der Klasse JFrame aufrufen um das Fenster zu "verstecken".
     
    Handlanger des Dr. Ex1tus

    Ich kenne Matzes dunkles Geheimnis ! oO

    o
    L_/
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.

    Hallo Nuray!

  3. #3
    MikaM MikaM ist offline Mitglied Bronze
    Registriert seit
    Nov 2008
    Beiträge
    31
    Hallo Hammet,

    erstmal Vielen Dank. Das mit der Ansicht des Codes war mir bewußt, ich weiß nur nicht wo ich den Quellcode diesbezüglich hinterlege, damit er gut lesbar ist.

    Zum Problem. Soweit ist mir das auch klar, das das Frame immer wieder nach Click neu angelegt wird. Das dispose() habe ich auch drinnen. Aber, ich kann es ja nicht verhindern, das der Bearbeiter das Fenster offen läßt und die selbe Schaltfläche noch einmal anklickt. Er kann also beliebig viele Fenster mit gleicher Funktionalität öffnen und gerade das will ich verhindern. Mit JDialog würde es zwar gehen, aber ich suchte nach einer Möglichkeit mit JFrame. Ich hoffe Du hast eine Idee oder das geht prinzipiell nicht. Gruß MikaM
     

  4. #4
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    573
    Lösung von hammet:
    Nun zu deinem Problem. Deine Idee ist schon richtig. Das Problem ist allerdings dieser Zeile:
    Code java:
    1
    
    FrameKond f = new FrameKond();
    Du erstellst bei jedem Methodenaufruf ein neues Fenster, deine nachfolgende Abfrage kann also nu "true" zurückliefern. Du könntest dein Fenster global deklarieren und beim Schließen des Fensters die "dispose()"-Methode aufrufen.
    Zusatz meinerseits:
    Du erstellst immer eine neue Referenz, sodass das Ergebnis in der if-Abfrage immer das selbe ist. Anstatt einer lokalen Variable für das Fenster solltest du es mal mit einer globalen Variable versuchen oder du machst aus der Klasse FrameKond nen Singleton, dann wäre das damit auch getan.
     

  5. #5
    Avatar von hammet
    hammet hammet ist offline himekishi
    Registriert seit
    Aug 2006
    Ort
    Bayern
    Beiträge
    334
    Zitat Zitat von MikaM Beitrag anzeigen
    Hallo Hammet,

    erstmal Vielen Dank. Das mit der Ansicht des Codes war mir bewußt, ich weiß nur nicht wo ich den Quellcode diesbezüglich hinterlege, damit er gut lesbar ist.

    Zum Problem. Soweit ist mir das auch klar, das das Frame immer wieder nach Click neu angelegt wird. Das dispose() habe ich auch drinnen. Aber, ich kann es ja nicht verhindern, das der Bearbeiter das Fenster offen läßt und die selbe Schaltfläche noch einmal anklickt. Er kann also beliebig viele Fenster mit gleicher Funktionalität öffnen und gerade das will ich verhindern. Mit JDialog würde es zwar gehen, aber ich suchte nach einer Möglichkeit mit JFrame. Ich hoffe Du hast eine Idee oder das geht prinzipiell nicht. Gruß MikaM
    Ich glaub du solltest meinen Post nochmals lesen.
    1. Habe ich geschrieben wie man den Code leserlich macht (mit den [.JAVA]-Tags).
    2. Habe ich auch eine Lösung zu deinem Problem gepostet (sogar den Quellcode dazu).
    3. Wie Akeshihiro aiuch sagte, könnte dir ein Singleton ebenfalls helfen:
    http://www.theserverside.de/singleton-pattern-in-java/
     
    Handlanger des Dr. Ex1tus

    Ich kenne Matzes dunkles Geheimnis ! oO

    o
    L_/
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.

    Hallo Nuray!

  6. #6
    MikaM MikaM ist offline Mitglied Bronze
    Registriert seit
    Nov 2008
    Beiträge
    31
    Hallo,

    das mit der Ansicht des Quellcodes hatte ich falsch verstanden, Hammet. Ich dachte du beziehst dich auf meine unsaubere Darstellung. Hatte ich falsch verstanden. Ist mir jetzt klar. Das mit dem Singleton werde ich auch ausprobieren. Danke euch beiden. Gruß MikaM
     

Ähnliche Themen

  1. Swing Fenster per Button schließen, NICHT das Programm beenden
    Von Markus im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 23.06.09, 12:53
  2. Swing Fenster funktioniert nicht wenn Firefox läuft
    Von raptot im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 30.08.08, 01:15
  3. Fenster öffnen geht nicht
    Von PhoenixDH im Forum Javascript & Ajax
    Antworten: 11
    Letzter Beitrag: 21.11.05, 19:15
  4. Ein Formular mehrmals öffnen
    Von ShadowFire im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 31.01.05, 11:24
  5. Formular mehrmals öffnen
    Von ollek81 im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 23.05.04, 23:33