# JWindow Fensterhirachie beibringen



## Gast (21. Feb 2007)

Hallo

was muss ich machen damit sich ein JWindow an die Fensterhirachie anpasst, z.B. das zuletzt geöffnete immer ganz oben, noch besser wäre wenn es immer das unterste ist also immer auf dem Desktop direkt liegt und nichts überdecken kann.

Ist das einfach zu ermöglichen oder hab ich damit nur ärger?

Vielleicht hilft es ja wenn ich mal mein Problem erkläre. Ich hab mir einen Terminplaner geschrieben und jetzt möchte ich den minimiert auf dem Desktop darstellen, er darf dabei nicht in der Fensterliste(Taskkleiste bei Windows) auftauchen und soll auch keine Fenster überdecken.
Dafür wollte ich dann ein JWindow nehmen aber das erfüllt nicht ganz die anforderungen weil es andere Fenster überdeckt.

ich hab schon 


```
setAlwaysOnTop(false)
```
und 

```
toBack
```

probiert aber das hilft nix.

Kann es sein das man da einen speziellen Listener braucht oder ach ich weiß auch nicht mehr...  

MfG
Patrick


----------



## The_S (21. Feb 2007)

Dein Window soll NIE im Vordergrund sein? Also nie vor irgendeiner Anwendung (nicht nur nicht vor einem anderen Fenster deiner Anwendung)?


----------



## Gast (21. Feb 2007)

Genau es soll ja nur eine minimierte Form sein der Terminplaner steckt in einem JFrame und den kann man sich dann ja jederzeit wieder holen aber die mini Form soll absolut in den Hintergrund drehten und nicht stören, sonst könnte man das Hauptprogramm auch direkt minimieren und in der Taskleiste lassen.


----------



## The_S (21. Feb 2007)

Sind und zweck Verstehe ich zwar nicht, aber toBack setzt das JWindow schonmal in den Hintergrund, da nicht in der Taskleiste kann es auch nur über die ALT+TAB Tastenkombi wieder in den Vordergrund gebracht werden (bzw. wenn es unter einem anderen Fenster hervorguckt). Diese Situation kannst du dann mit dem WindowListener überprüfen und ggf. nochmal ein toBack aufrufen.


----------



## Gast (21. Feb 2007)

Also es hat nicht geklappt und das mit Alt+Tab funktioniert übrigens nur bei JFrame und solchen Geschichten ich hab aber ein JWindow.
Aber trotzdem danke.


----------



## The_S (21. Feb 2007)

Wahnsinns Rückmeldung ... "Es hat nicht geklappt ..."

tjoa, wenns einfach so ohne Grund nicht klappt, dann kann ich dir leider auch net helfen :roll:


----------



## Gast (21. Feb 2007)

Tja ich hab gemacht was du geschrieben hast aber der gewünschte Effekt ist aus geblieben und ich bin wieder im Ausgangszustand, also kannst du mir wohl wirklich nicht helfen. Also sowas aber auch! Höfflichkeit kann man im anonymen Netz wohl auch nicht mehr erwarten.


----------



## WieselAc (21. Feb 2007)

@ Hobbit jetzt nicht aufregen


----------



## The_S (22. Feb 2007)

WieselAc hat gesagt.:
			
		

> @ Hobbit jetzt nicht aufregen



Dieser Satz war Gold wert  ... *erstmal zurückzieht und zur Entspannung irgendwelche Spam mails liest*


----------



## Mr. Anderson (18. Mrz 2007)

Hallo,

fast das gleiche Problem habe ich auch. Ich verwende das SDK 1.6 von Sun mit KDE unter Linux und ich kann JWindow kein vernünftiges Verhalten beibringen.

Die Angabe


```
setAlwaysOnTop (false)
```

wird, so weit ich das sehe, schlicht und ergreifend ignoriert. Das Einzige, was ich gefunden habe, um überhaupt irgendetwas vor das JWindow zu bekommen ist


```
toBack ()
```

Doch leider verschwindet das JWindow dann nur hinter der Leiste von Kicker. Alle anderen Fenster, egal ob JFrame oder ein anderes Programm, bleiben hinter JWindow.

Ich möchte ein Fenster ohne Dekoration, das den ganzen Bildschirm einnimmt. Man soll es aber z. B. mit Alt+Tab in den Hintergrund schicken können und das Programm soll auch kleinere Fenster vor diesem großen Fenster anzeigen können (evtl. auch mit Fensterdekoration oder zumindest mit einem Rahmen)

Ob das mit Vollbildmodus realisiert wird oder nicht, ist mir egal. Bisher ist das Problem immer gleich, egal ob Vollbild oder nicht.


----------



## Mr. Anderson (18. Mrz 2007)

Hat sich erledigt. Hab ein JFrame genommen. Hatte nicht mehr dran gedacht, dass man da die Fensterdekorationen ja entfernen kann. ^^


----------



## The_S (18. Mrz 2007)

Mr. Anderson hat gesagt.:
			
		

> Die Angabe
> 
> 
> ```
> ...



Ich weiß gar nicht, was hier alle an der Methode missverstehen ... Wer API lesen kann, oder sich einfach mal ein paar Gedanken darüber macht, wird die Methode verstehen können.

set Always On Top = setze Immer in Vordergrund = Fenster bleibt immer im Vordergrund. true bewirkt dann natürlich, dass das Fenster immer im Vordergrund ist, dazu muss es aber nicht zwingend den Fokus haben.

false bedeutet dann natürlich, dass es NICHT IMMER im Vordergrund ist, also im Vordergrund, Hintergrund oder zwischen zwei Fenstern sein kann. Eben das normale Verhalten eines Fensters!

Auch durch logisches Denken, könnte man darauf kommen, dass die Methode nicht bewirken soll, dass das Fenster immer im Hintergrund ist, da man hier nur zwei Zustände definieren kann. Der Primäre ist, wie man leicht aus dem Methodennamen rauslesen kann, das Fenster immer im Vordergrund zu halten. Würde jetzt false bewirken, dass es immer im Hintergrund bleibt, so würde es für ein JFrame ja unmöglich sein sich normal zu verhalten, da es sich ja entweder immer im Vordergrund, oder eben im Hintergrund, aber nie zwischen zwei Fenstern befinden könnte.


----------



## Mr. Anderson (18. Mrz 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Mr. Anderson hat gesagt.:
> 
> 
> 
> ...



Wie bin ich wohl zu der Methode gekommen? Richtig, ich habe die Dokumentation der API gelesen.



> set Always On Top = setze Immer in Vordergrund = Fenster bleibt immer im Vordergrund. true bewirkt dann natürlich, dass das Fenster immer im Vordergrund ist, dazu muss es aber nicht zwingend den Fokus haben.


Um den Fokus geht es auch nicht.



> false bedeutet dann natürlich, dass es NICHT IMMER im Vordergrund ist, also im Vordergrund, Hintergrund oder zwischen zwei Fenstern sein kann. Eben das normale Verhalten eines Fensters!


Und genau das funktioniert eben nicht. JWindow weigert sich vehement, andere Fenster zu respektieren. Ganz gleich, ob man Alt+Tab drückt oder im Code toBack () stehen hat, oder was auch immer - das JWindow bleibt im Vordergrund. Einzig und allein der Kicker kommt bei toBack () nach vorne. Drückt man nur Alt+Tab bleibt aber auch der verborgen.



> Auch durch logisches Denken, könnte man darauf kommen, dass die Methode nicht bewirken soll, dass das Fenster immer im Hintergrund ist, da man hier nur zwei Zustände definieren kann. Der Primäre ist, wie man leicht aus dem Methodennamen rauslesen kann, das Fenster immer im Vordergrund zu halten. Würde jetzt false bewirken, dass es immer im Hintergrund bleibt, so würde es für ein JFrame ja unmöglich sein sich normal zu verhalten, da es sich ja entweder immer im Vordergrund, oder eben im Hintergrund, aber nie zwischen zwei Fenstern befinden könnte.



Genau das will ich doch auch. Ein Fenster, das sich ganz normal verhält. So steht es auch in der Dokumentation. Aber es funktioniert halt nicht.

Ist aber sowieso egal, da JFrame das Problem bereits gelöst hat.


----------



## The_S (19. Mrz 2007)

Sorry, dann hab ich dich wohl missverstanden, da der Threadersteller davon ausgegangen ist und du meintest, dass du ein ähnliches Problem hast.

Ich kann dein Prob mit dem JWindow leider nicht nachvollziehen, da ich hier weder eine KDE Umgebung, noch die JRE 6 habe. Aber mit JRE 5 und Win XP geht das hier ohne Probleme


```
import javax.swing.*;
public class Test {

    public Test() {
    }
    
	public static void main(String[] args) {
		
		JWindow window = new JWindow();
		window.setSize(400, 400);
		window.setVisible(true);
	}    
}
```


----------



## Guest (19. Mrz 2007)

Hm. Ja. Vielleicht hätte ich besser einen neuen Thread erstellt. Sorry.

Nunja, werde bei Gelegenheit einen Bugreport schreiben.


----------

