Wie schließe ich ein JEditorPane-Fenster?

Holger Winkler

Grünschnabel
Hallo, ich habe folgendes Problem:

In der Main-Methode habe ich eine While-Schleife mit einem Auswahldialog (JOptionPane.showInputDialog) von wo aus ich zu verschiedenen Methoden je nach Auswahl springe. Eine davon hat die Aufgabe eine Textdatei mittels JEditorPane anzuzeigen. Dies funktioniert auch.

Allerdings wird nach dem Anzeigen der Textdatei mit der Schleife der Main-Methode fortgefahren, so dass wieder deren Auswahldialog erscheint. Mit der Maus kann ich zwar auf die Textdatei gehen und versuchen das Fenster zu schließen, aber es klickt nur und das Fenster wird nicht geschlossen (den Focus hat der Auswahldialog).

Wie kann ich die Mainmethode zum Halten bringen, bis das Textfenster geschlossen ist oder den Fokus auf der Textdatei halten? Und wie kann ich das Textfenster schließen?

Anzeige der Textdatei mit folgendem Code:
public class Viewer extends JFrame
{
private JEditorPane htmlPane = null;

public Viewer(String url)
{
htmlPane = new JEditorPane( url );
htmlPane.setEditable( false );
JScrollPane scrollPane = new JScrollPane(htmlPane);
getContentPane().add( scrollPane );
setTitle(url);
setSize( 600,600 );
setVisible(true);
}
}
Im voraus vielen Dank.
Holger
 
Danke für Deine Antwort. Leider funktioniert es nicht, da, wie geschrieben, das JEditorPane-Fenster, welches bei einer bestimmten Auswahl über eine Methode aufgerufen wird, nicht den Focus hat. Die While-Schleife in der Main-Methode hat ja bereits wieder den Auswahldialog auf den Bildschirm gebracht und nur dieser kann angesprochen werden.
Der ungefähre Ablauf ist wie folgt:

public static void main()
{
while(...)
{
auswahldialog()
...
if (auswahl == 1)
methode 1
else if (auswahl ==2)
methode 2
.
.
.
}
}

methode1
{
JEditorPane...
}
 
Hallo Holger,

du könntest eine weitere Abfrage in die while-Schleife einbauen. Die schaut erst ob das JEditorPane-Fenster geschlossen ist und führt erst dann nochmals den Auswahldialog. Da fallen mir jetzt zwei Möglichkeiten ein.

1. Abfragen mit der Methode isVisible() von JFrame oder einer vergleichbaren anderen Methode oder

2. Abfragen über eine Variable

zu 1:
public static void main()
{
while(...)
{
if (!myEditorPane1.isVisible() & !myEditorPane2.isVisible())
{

auswahldialog()
...
if (auswahl == 1)
methode 1
else if (auswahl ==2)
methode 2

}
.
.
.
}
}

methode1
{
JEditorPane...
}


zu 2:

public static void main()
{

boolean status = true; // true steht für keine Fenster offen und umgekehrt false für irgendeinfenster offen

while(...)
{
if (status)
{
auswahldialog()
...
if (auswahl == 1){
methode 1
status = false;}
else if (auswahl ==2) {
methode 2
status = false;}

}
.
.
.
}
}

methode1
{
JEditorPane...
Beim schließen -> status=true;
}

Vg Erdal
 
Zurück