# Automatisch einen Dialog schliessen



## Kaladial (21. Dez 2007)

moin

ich hab nen dialog der nen status anzeigt und wenn der status nen bestimmten wert annimmt dann soll sich das fenster schliessen ... 

hmmm also der geht in die funktion rein, aber mein dispose() funktioniert nicht... 
habs schon mit this.dispose() ausprobiert ebenfals ohne erfolg... 

was muss ich denn machen damit sich der dialog von alleine schließt? (also wenn ich das x in dem dialog drück schliesst sich das fenster normal, aber ich will ja nix drücken müssen) 

mfg Kala


----------



## The_S (21. Dez 2007)

code


----------



## Kaladial (21. Dez 2007)

```
private void initialize() {
		final Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); 
		final int x_pos = (int) (screenDimension.getWidth() / 2.0f - 400.0f / 2.0f); 
		final int y_pos = (int) ((screenDimension.getHeight() / 2.0f - 200.0f / 2.0f)-100); 

		//this.setBounds(new Rectangle(0, 0, 400, 300));
		this.setBounds(new Rectangle(x_pos, y_pos, 400, 200));
		this.setResizable(false);
		this.setContentPane(getJContentPane());
		jLabelMeldung.setText(""+meldung);
		
		do{}while(!ScanControl.sc_global.stop_all);
		closeWindow();
	}

	private void closeWindow(){
		System.out.println("close");
		dispose();
	}
```


----------



## The_S (21. Dez 2007)

sicher dass closeWindow jemals aufgerufen wird? Deine Schleife blockiert alles! Lager die (und den Aufruf) in nen extra Thread aus, und lass  die Schleife nach jedem durchlauf ein bisschen schlafen (100ms z. B.).


----------



## Kaladial (21. Dez 2007)

close wird ausgegeben... 
die schleife soll alles blocken ... 

ScanControl.sc_global.stop_all wird in einem thread gesetzt ...


----------



## The_S (21. Dez 2007)

in welcher Klasse liegt die Methode closeWindow?


----------



## Kaladial (21. Dez 2007)

das is n jdialog


----------



## The_S (21. Dez 2007)

Funktioniert bei mir ohne Probleme


```
JDialog dia = new JDialog();	
		dia.setVisible(true);
		try {
			Thread.sleep(5000);
		}
		catch (InterruptedException e) {
			e.printStackTrace();
		}
		dia.dispose();
```

Mach mal ein KSKB.


----------



## Kaladial (21. Dez 2007)

kskb?

ich post mal n bissel mehr code... weil das is kram was du da gepostet hast... 

aufruf:

```
DlgComStart dlg = new DlgComStart(this, "Starte Com-Port-Verbindung"); 
dlg.setTitle("Starte Com-Port-Verbindung");
dlg.setModal(true);
dlg.setVisible(true);
```

DlgComStart:


```
package ScanControl;

import javax.swing.JPanel;

import java.awt.Dimension;
import java.awt.Frame;
import java.awt.BorderLayout;
import java.awt.Rectangle;
import java.awt.Toolkit;

import javax.swing.JDialog;
import javax.swing.JLabel;

public class DlgComStart extends JDialog {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JLabel jLabelMeldung = null;
	String meldung="";
	/**
	 * @param owner
	 */
	public DlgComStart(Frame owner, String meldung) {
		super(owner);
		this.meldung=meldung;
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		final Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); 
		final int x_pos = (int) (screenDimension.getWidth() / 2.0f - 400.0f / 2.0f); 
		final int y_pos = (int) ((screenDimension.getHeight() / 2.0f - 200.0f / 2.0f)-100); 

		//this.setBounds(new Rectangle(0, 0, 400, 300));
		this.setBounds(new Rectangle(x_pos, y_pos, 400, 200));
		this.setResizable(false);
		this.setContentPane(getJContentPane());
		jLabelMeldung.setText(""+meldung);
		
		do{}while(!ScanControl.sc_global.stop_all);
		closeWindow();
	}

	private void closeWindow(){
		System.out.println("close");
		dispose();
	}
	
	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabelMeldung = new JLabel();
			jLabelMeldung.setText("");
			jLabelMeldung.setHorizontalAlignment(JLabel.CENTER);
			jLabelMeldung.setBounds(new Rectangle(20, 50, 350, 20));
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(jLabelMeldung, BorderLayout.NORTH);
		}
		return jContentPane;
	}

}
```


----------



## The_S (21. Dez 2007)

Das ist Kram, was ich gepostet hab? Aja ...

ein KSKB ist ein kleines, selbst-kompilierbares Beispiel. Also einfach eine Klasse auf das nötigste beschränkt, die dein Problem nachvollziehen lässt und eine Main-Klasse hat, damit man das Ganze ausführen kann.


----------



## Kaladial (21. Dez 2007)

ja naja da haste es ... musst halt nur um den aufruf ne main bauen ... 

und es is kram weil das was du gepostet hast sich net auf mein problem bezieht...


----------



## The_S (21. Dez 2007)

tz ... müss ma noch Weihnachtsgeschenke kaufen, hat dich deine Freundin verlassen, oder sonst irgendwelche Leiden? Oder warum bist du so pampig?

Das ist KEIN KSKB. Die ScanControl Klasse fehlt z. B.

Und du hast dich beschwert, dass dispose deinen Dialog nicht schließt. Macht es aber, wie ich dir mit meinem Code bewiesen hab.

Deinen Fehler habe ich übrigens schon gefunden (nach studieren deines Codes), behalte ihn aber für mich, weil ich auch ab und an gern trotzig und pampig bin  .


----------



## Kaladial (21. Dez 2007)

ohne worte ...


----------



## The_S (21. Dez 2007)

Kaladial hat gesagt.:
			
		

> ohne worte ...



Dann behalt die beiden in Zukunft auch lieber für dich.

DU suchst hier Hilfe,
DU willst etwas von uns,
DU weißt nicht weiter,
DU hast damit angefangen rumzustänkern

und trotzdem erwartest du, dass man dir hier gut und kostenlos in unserer Freizeit hilft?

btw: Eine simple Entschuldigung hätte es auch getan. Aber evtl. findet sich ja ein anderer Helfer, der sich gerne von dir anpöpeln lässt :roll: . Ich für meinen Teil halte mich in Zukunft inhaltlich aus deinen Threads raus (ja, ich weiß, geht dir am Arsch vorbei, musst du nicht extra noch erwähnen :roll: ).


----------



## Kaladial (21. Dez 2007)

jo was genau empfiundest du denn als anpöbeln? 

aber ja bitte halt dich aus meinen threads raus du hilfst nämlich net du pöbelst hier nur leute an und das brauch ich net ...


----------



## ARadauer (21. Dez 2007)

sei doch ned so empfindlich hobbit.

mich würds auch interessieren, wo der fehler liegt.


----------

