JDialog Modality

mariusmeier

Mitglied
Hallo zusammen

Ich habe folgendes Problem. Wenn ich in meiner Applikation einen selbsterstellten JDialog (Dieser ist MODAL) öffne, dann läuft im Hintergrund ein Thread, welcher über das Netzwerk ständig Pakte verschickt, um die Verbindung aufrecht zu halten.
In diesem JDialog öffnet unter umständen ein weiterer JDIalog (auch MODAL) falls ein Fehler aufgetreten ist. Leider musste ich feststellen, dass wenn dieser geöffnet wird, ist im Hintergrund der THREAD inaktiv. Wenn ich die Modalität dess zweiten geöffneten JDialog abschalte, läuft dieser Thread wieder reibungslos. Was kann ich dagegen machen ?

MFG
 

mariusmeier

Mitglied
Ja es soll Modal bleiben. Ein Fehlerdialog soll ja vom User zuerst in Kenntnis genommen werden, dass er dagegen was tun kann oder sich bei den zuständigen Leuten melden. Darum soll dass nicht einfach verschwinden.

ERROR DIALOG:

Java:
public class ErrorDialogCreation extends AbstractDialog {
		
		public ErrorDialogCreation () {
			super(DataAcquisitionView.languageBundle.getString("ErrorDialog_Title"));
			System.out.println("DIALOG: " + dialog);
			errorPanel = new ErrorPanel(this);
			getContentPane().add(errorPanel);
			
			super.setSize(new Dimension(xNormal, yNormal));
			setDialogExtended(true, dialog);
			errorPanel.taError.setText("");
			setLocation(getMiddleXLocation()-getSize().width/2, getMiddleYLocation()-getSize().height/2);
			
			/*------------------Set text from error dialog-----------------------*/
			Iterator itr = errorMessages.iterator();
			String translatedMessage = "<html>";
			String errorMessages = "";
			while(itr.hasNext()) {
				Vector data = (Vector) itr.next();
				String errorCode = (String) data.get(0);
				String extendedErrorMessage = (String) data.get(1);
				
				translatedMessage = translatedMessage + languageBundle.getString(errorCode) + "<br>";
				errorMessages = errorMessages + errorCode + ": " + extendedErrorMessage + "\n";
			}
			translatedMessage = translatedMessage + "</html>";
			errorPanel.lbErrorMessage.setText(translatedMessage);
			errorPanel.taError.append(errorMessages);
			/*--------------End Set text from error dialog-----------------------*/

			super.setVisible(true);
		}
		
		public JDialog getDialog() {
			return dialog;
		}
	}


Abstract Class Dialog:
Java:
public abstract class AbstractDialog extends JDialog {
	public JDialog dialog;
	public Font titleBorderFont = new Font("Arial", Font.BOLD, 14);
	
	public AbstractDialog(String title) {
		super();
		super.setModal(true);
		//super.addMouseListener(this);
		dialog = this;
		super.setTitle(title);
	}
	
	public TitledBorder createBorder(Border border, String title, Font font) {
		TitledBorder borderSnapshot = BorderFactory.createTitledBorder(border, title);
		borderSnapshot.setTitleFont(font);
		return borderSnapshot;
	}
	
}

MFG
 

Sued_Faust

Bekanntes Mitglied
Also was du da gepostet hast hilft nicht wirklich weiter, da dein Problem nicht im JDialog liegt, sondern darin, das es deinen Thread blockiert. Weshalb muss deine Applikation überhaupt ständig Pakete senden?
Aber um zur Sache zu kommen, wenn du ein thread hast indem du deine Packete sendest und dieser für sich selbst die ganze Zeit laufen soll, solltest du alles andere in einen seperaten Thread laufen lassen. Wie zb die handhabung der Fehlermeldungen.

Gruß
 

KrokoDiehl

Top Contributor
Bei modalen Dialogen ist es so, dass der Aufruf von
Code:
setVisible(true)
den aktuellen Thread blockiert und erst dann zurückkehrt, wenn der Dialog nicht mehr sichtbar ist. Wenn dieser Thread also zugleich dein im Hintergrund arbeitender Thread ist, steht dieser an der Stelle.

Übrigens, dass
Code:
getDialog()
brauchst du nicht wirklich, denn AbstractDialog IST ja schon ein JDialog, sodass du keine zusätzliche Referenz auf this machen musst. Mal abgesehen davon, dass öffentliche Attribute etwas umstritten sind ;)
 

mariusmeier

Mitglied
Das Frontend erwartet alle 10 Sekunde eine Antwort der Applikation. Geschieht dies nicht, wird die Verbindung (Socket) automatisch auf der Frontend-Seite geschlossen.

Also ich habe einen TimerTask am laufen:

Java:
requestXmlTimer = new Timer();
		requestXmlTimer.scheduleAtFixedRate(new RequestMode(this.xmlTimerRequest), 500, requestXmlTime);

Wieso sperrt der erste modale Dialog, den ich öffne, diesen TimerTask nicht, und der zweite Dialog welche aus dem ersten Dialog geöffnet wird sperrt diesen TimerTask?

MFG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Jdialog nur 1x anzeigen Java Basics - Anfänger-Themen 2
D JButton in JDialog mit Action belgen Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
J JDialog: wie kann ich ihn direkt als invisible erstellen Java Basics - Anfänger-Themen 7
A JDialog öffnet sich nicht Java Basics - Anfänger-Themen 7
D JDialog schließen Java Basics - Anfänger-Themen 11
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
H JDialog Problem Java Basics - Anfänger-Themen 10
H Problem JDialog.setVisible Java Basics - Anfänger-Themen 3
T Modales JDialog schliessen mit JButton Java Basics - Anfänger-Themen 2
I JDialog Problem Java Basics - Anfänger-Themen 37
J Icon JDialog mit Java 1.4 Java Basics - Anfänger-Themen 2
S JDialog resize zur Laufzeit PROBLEM!!! Java Basics - Anfänger-Themen 5
S JDialog und SwingUtilities Java Basics - Anfänger-Themen 6
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
M JDialog soll was an die AufruferKlasse zurück geben Java Basics - Anfänger-Themen 3
S Layout JDialog Java Basics - Anfänger-Themen 9
S eigene Methoden in JDialog Java Basics - Anfänger-Themen 13
pun Im JDialog auf Objekt im Parent JFrame zugreifen Java Basics - Anfänger-Themen 2
C Frame, JFrame, JDialog Java Basics - Anfänger-Themen 12
S Datenzugriff auf JDialog! Java Basics - Anfänger-Themen 8
A JDialog, Owner JFrame ZIEL: nciht in der taskbar Java Basics - Anfänger-Themen 9
E Übergabe von werten aus einem JDialog Java Basics - Anfänger-Themen 4
B Grafiken/Bilder mit Netbeans in Jdialog Java Basics - Anfänger-Themen 7
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
G JDialog + p aintComponent-Override Java Basics - Anfänger-Themen 3
A Klasse erbot von JDialog. Kontruktor? Java Basics - Anfänger-Themen 4
M Hauptfenster nicht wählbar bei offenem JDialog Java Basics - Anfänger-Themen 2
G Bei JDialog warten Java Basics - Anfänger-Themen 5
B Fenstergröße variiert bei JDialog.pack()-Aufruf Java Basics - Anfänger-Themen 10
S JDialog während automatischer Dateisuche einblenden Java Basics - Anfänger-Themen 6
J JDialog zeigt nichts an Java Basics - Anfänger-Themen 4
C JDialog Werte nach Frame übergeben Java Basics - Anfänger-Themen 10
G JDialog + setOpaque Java Basics - Anfänger-Themen 5
G JDialog auf Jpanel statt Frame? Java Basics - Anfänger-Themen 4
N Werte von JDialog entgegennehmen Java Basics - Anfänger-Themen 7
G JDialog-Status im Frame abfragen Java Basics - Anfänger-Themen 2
Bernasconi dynamisches JDialog Java Basics - Anfänger-Themen 2
T Register im JDialog Java Basics - Anfänger-Themen 9
G JDialog übers X schliessen und Programm beenden Java Basics - Anfänger-Themen 4
C Fehlermeldungen umleiten auf JDialog Java Basics - Anfänger-Themen 2
S new .() extends JDialog {.} Java Basics - Anfänger-Themen 15
M Button in einem JDialog mit Enter ausführen Java Basics - Anfänger-Themen 2
C FocusLost reagiert nicht bei JDialog Java Basics - Anfänger-Themen 5
E Von einem JDialog einen neuen JDialog aufrufen Java Basics - Anfänger-Themen 10
R JDialog schließen ( nicht mit dispose()! ) Java Basics - Anfänger-Themen 14
G JDialog Java Basics - Anfänger-Themen 15
M JDialog Java Basics - Anfänger-Themen 3
M JDialog basierend auf JDialog aufrufen Java Basics - Anfänger-Themen 4
B KeyListener beim JDialog Java Basics - Anfänger-Themen 4
E JDialog schließen Java Basics - Anfänger-Themen 9
S JDialog Frage Java Basics - Anfänger-Themen 2
G Wiedermal vererbung, extends JDialog extends Exception ? Java Basics - Anfänger-Themen 8
P JDialog funktioniert nicht? Java Basics - Anfänger-Themen 9
P JDialog & JProgressBar Java Basics - Anfänger-Themen 2
F JDialog per Button-Klick schliessen Java Basics - Anfänger-Themen 2
S JDialog einrichten Java Basics - Anfänger-Themen 4
G Owner von JDialog;Komme einfach nicht weiter Java Basics - Anfänger-Themen 4
G einfaches jdialog beispiel Java Basics - Anfänger-Themen 1
J Default Button bei jDialog Java Basics - Anfänger-Themen 2
M JDialog mit TextArea Java Basics - Anfänger-Themen 2
K JDialog aus einer anderen klasse einfügen Java Basics - Anfänger-Themen 2
S Auf JDialog aus anderer Datei zugreifen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben