Antwort
 
Themen-Optionen
Alt 16.02.2006, 00:21 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 13.10.2005
Beiträge: 5
Standard JInternalFrame

hallo,

Wie kann man verhindern, dass ein JInternalFrame ein zweites Mal geöffnet wird?
Ich habe z.B ein Info und ein Hilfe-Fenster.
Diese kann ich jedoch mehrfach öffnen.

Code-Ausschnitt:
...
Code:
JLayeredPane desktop;
desktop = getLayeredPane();
JEditorPane editorPane = new JEditorPane();
editorPane.setEditable(false);
editorPane.setContentType("text/html");
editorPane.setText(text);
JInternalFrame internalFrame = new JInternalFrame( "Hilfe", false, true, false, false) 
internalFrame.setSize(400, 300);
internalFrame.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
          
internalFrame.setLocation((int)(super.getWidth()/2) - (int)(internalFrame.getWidth() / 2), (int)(super.getHeight()/2) - (int)(internalFrame.getHeight() / 2));
internalFrame.getContentPane().add( new JScrollPane(editorPane) );
desktop.add(internalFrame, desktop.DEFAULT_LAYER);
internalFrame.setVisible(true);
...

Geändert von Ben (16.02.2006 um 00:26 Uhr). Grund: Code-Tags hinzugefügt
Carsten ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.02.2006, 00:27 Nach oben    #2
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.471
Standard

Hi,
was meinst Du denn mit
Zitat:
Zitat von Carsten
Diese kann ich jedoch mehrfach öffnen.
?

Der Thread wurde verschoben, wegen ...
... Postings im falschen Forum. Bitte beim nächsten Mal darauf achten.,

verschoben
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.02.2006, 00:34 Nach oben    #3
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 575
Standard

Das Fenster wird ja jedesmal neu instaniziert, deshalb kommt immer ein neues.
Leider kenne ich deinen Code nicht nähe, du könntest prüfen ob es schon offen bzw. visible ist.

Noch einfacher:
du legst im DesktopPane eine boolean-variable für das entsprechende Frame an.
Zum Beispiel
Code:
public boolean helpvisible=false;
Vor dem Öffnen des Fensters prüfst du die Variable. Ist sie false wird geöffnet.
Dann sorgst du dafür, dass das JInternalFrame beim öffnen diese Variable auf true setzt und beim schließen auf false.

Ist zwar nicht die schönste Methode, geht aber.


Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.02.2006, 14:09 Nach oben    #4
Neuer Benutzer
 
Registriert seit: 13.10.2005
Beiträge: 5
Standard

Hallo,

vieln Dank zunächst für Eure Antworten.
So eine boolean-Variable habe ich gesetzt, weiß aber leider nicht wie ich die Schließen-Aktion abfangen kann, um somit die Variable wieder auf false setzen kann.


Aufruf in einer Funktion createMenu
//? - Hilfe
actHelp = new AbstractAction("Help", new ImageIcon("images/Help"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
if (helpWin == false){
showHelp();
}
jtfStatus.setText("\"? - Hilfe\" gewählt.");
}
};
keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0);
actHelp.putValue(Action.ACCELERATOR_KEY, keyStroke);
actHelp.putValue(Action.SHORT_DESCRIPTION, TTT_HELP);
jmiHelp = menuHelp.add(actHelp);
jmiHelp.setMnemonic('p');
}

...

die eingntliche Funktion:
// Hile-Fenster
public void showHelp(){
String text = "<htlm><body>Dies ist ein <b>Hilfetext</b> zur Swing-Applikation SwingFrame</boy></html>";
JLayeredPane desktop;
desktop = getLayeredPane();
JEditorPane editorPane = new JEditorPane();
editorPane.setEditable(false);
editorPane.setContentType("text/html");
editorPane.setText(text);
JInternalFrame internalFrame = new JInternalFrame( "Hilfe", // title
false, // resizable
true, // closeable
false, // maximizable
false ); // iconifiable
internalFrame.setSize(400, 300);

internalFrame.setLocation((int)(super.getWidth()/2) - (int)(internalFrame.getWidth() / 2), (int)(super.getHeight()/2) - (int)(internalFrame.getHeight() / 2));
internalFrame.getContentPane().add( new JScrollPane(editorPane) );
desktop.add(internalFrame, desktop.DEFAULT_LAYER);
internalFrame.setVisible(true);
helpWin = true;
}

Wie fange ich das Close-Event ab und setze die Variable helpWin = false ?

An einer eleganteren Methode wäre ich auch sehr interessiert! - denn wer möchte sich nicht verbessern?!

Gruß
Carsten
Carsten ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 18.02.2006, 14:24 Nach oben    #5
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 575
Standard

Ich werd heute Abend mal über enie elegantere Methode nachdenken.

Abfangen kannst du indem du sagst.
JInternalFrame.addWindowListener(new WindowListener);

Du mußt dann nur einen Window-Listener implementieren, also die 3 oder 5 Methoden die der braucht einfügen. Eclipse ist dir da ja sehr hilfreich was sowas angeht, ansonsten nochmal posten (bin gerade in Eile) oder in die API schauen.


Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


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

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 are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bild in JinternalFrame mit JSrollPane taskin73 Allgemeine Java-Programmierung 5 08.08.2005 22:53
JInternalFrame und JDialog taskin73 Allgemeine Java-Programmierung 17 03.08.2005 20:57
von JInternalFrame erben xeon Desktop-Applikationen und Grafik 5 07.07.2005 12:34
JInternalFrame und Canvas bezüglich Reihenfolge Hot-Thunder Desktop-Applikationen und Grafik 10 06.07.2005 20:56
Kindfenster im JInternalFrame -> max. Größe Ben Desktop-Applikationen und Grafik 12 16.06.2005 20:50


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:52 Uhr.


Powered by vBulletin® Version 3.7.3 (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