setAlwaysOnTop(true); toFront(); - bringt alles nichts

Hallo community,

ich versuche mal mein Problem darzulegen.
Ich habe mir ein Programm zusammen geklaut, welches nur ein Bild im Vollbildmodus anzeigen soll.
Und dieses soll immer im Vordergrund stehen und von keinem anderen Programm/Fenster sich diese Position nehmen lassen.
Unter Linux funktioniert das wunderbar, nur Windows ist da bisschen eigen. Wenn dem Java-Prog. der Fokus genommen wird, zB. durch wechseln mit Alt-Tab, geht das Gezappel auf dem Bildschirm los. Beide Programme streiten sich dann um die vordere Position auf Monitor, immer im Wechsel.

Versucht habe ich es mit setAlwaysOnTop(true); setVisible(true); toFront();, einzeln und auch alle zusammen.

Hat jemand eine Idee die ich noch nicht googeln konnte?

Java:
import java.awt.Graphics;
import java.awt.GraphicsEnvironment; 
import java.awt.Image; 
import java.awt.Toolkit; 
import java.awt.event.FocusEvent; 
import java.awt.event.FocusListener; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import java.net.MalformedURLException;
import javax.swing.JFrame;
 
public class ShowImage extends JFrame{
       // this line is needed to avoid serialization warnings  
       private static final long serialVersionUID = 1L;
       Image screenImage; // downloaded image  
       int w, h; // Display height and width
 
       public static void main(String[] args) throws MalformedURLException {
               new ShowImage("Wallpaper.JPG");
       }
 
       // Class constructor  
       ShowImage(String source) throws MalformedURLException {
          // Exiting program on window close
           addWindowListener(new WindowAdapter() {
               public void windowClosing(WindowEvent e) {
                   System.exit(0);
               }
           });
 
           // Exitig program on mouse click
           addMouseListener(new MouseListener() {
               public void mouseClicked(MouseEvent e) { System.exit(0); }
               public void mousePressed(MouseEvent e) {}
               public void mouseReleased(MouseEvent e) {}
               public void mouseEntered(MouseEvent e) {}
               public void mouseExited(MouseEvent e) {}
           });
 
           addFocusListener(new FocusListener() {
             // setAlwaysOnTop(true); setVisible(true); toFront();
             public void focusLost(FocusEvent e) {toFront();} 
             public void focusGained(FocusEvent e) {}               
            });
 
           // remove window frame  
           this.setUndecorated(true);
 
           // window should be visible
           this.setAlwaysOnTop(true);
           this.setVisible(true);
           this.toFront();
 
           // switching to fullscreen mode
           GraphicsEnvironment.getLocalGraphicsEnvironment().
           getDefaultScreenDevice().setFullScreenWindow(this);
 
          // getting display resolution: width and height
           w = this.getWidth();
           h = this.getHeight();
 
           // loading image  
          screenImage = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource(source)); // otherwise - file
       }
 
       public void paint (Graphics g) {
           if (screenImage != null) // if screenImage is not null (image loaded and ready)
               g.drawImage(screenImage, // draw it  
                           w/2 - screenImage.getWidth(this) / 2, // at the center  
                           h/2 - screenImage.getHeight(this) / 2, // of screen
                           this);
               // to draw image at the center of screen
               // we calculate X position as a half of screen width minus half of image width
               // Y position as a half of screen height minus half of image height
       }
}


Über eine Antwort würde ich mich freuen, und für Eure Mühe Dank im voraus.
 

Landei

Top Contributor
Das scheint nur zusammen mit setUndecorated(false) ordentlich zu funktionieren, aber dann ist latürnich die Titelleiste und Umrandung des Fensters weg.
 

faetzminator

Gesperrter Benutzer
Ich bin kein Windoof User (zumindest privat nicht...) und kein Fat-Client Entwickler, aber: Der Taskmanager unter Win XP macht das normalerweise doch auch so, wie es der User gerne hätte?
 
Das scheint nur zusammen mit setUndecorated(false) ordentlich zu funktionieren, aber dann ist latürnich die Titelleiste und Umrandung des Fensters weg.

Danke Dir "Landei" für Deine schnelle Antwort.
Und ja, Du hast recht, wenn man die Titelleiste dran läßt funktioniert es, schöner wäre aber ohne.

P.S. den Anderen danke ich natürlich auch für ihre Beiträge, den es scheint so zu sein, wie "Guybrush Threepwood" schreibt, daß Windows dieses Verhalten unterbindet.
 
Zuletzt bearbeitet:

Guybrush Threepwood

Top Contributor
Ich bin kein Windoof User (zumindest privat nicht...) und kein Fat-Client Entwickler, aber: Der Taskmanager unter Win XP macht das normalerweise doch auch so, wie es der User gerne hätte?

Das ist richtig, aber da gibt es sicher irgendwelche speziellen systemeigenen Funktionen, die man ohne weiteres nicht aus Java heraus ansprechen kann. Für "normale" Programme ist es nicht vorgesehen, sich in den Vordergrund drängeln zu können. Wenn ein Programm das versucht blinkt bei Windows in diesem Fall der jeweilige Eintrag in der Taskleiste, um auf das Programm aufmerksam zu machen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Warum zeigt dieser reguläre Ausdruck true an? Java Basics - Anfänger-Themen 1
I String Expression mit Java validieren (true / false) Java Basics - Anfänger-Themen 34
F boolean stellt sich auf true Java Basics - Anfänger-Themen 15
W Stackabarbeitung - Wozu dient das "True" ? Java Basics - Anfänger-Themen 1
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
T Invertierung !(false/true) Java Basics - Anfänger-Themen 11
H Koordinateneingabe im 2D Array soll true/false zurückgeben Java Basics - Anfänger-Themen 5
I Methoden List.contains() beim 2. Element = true Java Basics - Anfänger-Themen 1
D Warum nicht true wenn Array leer ist? Java Basics - Anfänger-Themen 8
N Zwei Strings mit "==" vergleichen warum TRUE Java Basics - Anfänger-Themen 2
M Wie gebe ich true or false aus? Java Basics - Anfänger-Themen 9
D Break Sprungmarken Problem einer While True in While True Java Basics - Anfänger-Themen 6
D Zwei Strings sind gleich bei if aber nicht true Java Basics - Anfänger-Themen 2
G Boolschen Ausdruck true machen Java Basics - Anfänger-Themen 2
M Erste Schritte while boolean=false läuft nur bei true??? Java Basics - Anfänger-Themen 23
H if-Abfrage, ungleich und falscher true Wert? Java Basics - Anfänger-Themen 11
J Array Muster mit true und false Java Basics - Anfänger-Themen 6
S If-Anweisunng ist IMMER true Java Basics - Anfänger-Themen 2
DStrohma Operatoren Kleiner-Zeichen in Größer-Zeichen ändern wenn boolen true? Java Basics - Anfänger-Themen 6
C ActionEvent mit CheckBox (true und false) Java Basics - Anfänger-Themen 6
U if true, "deaktiviere" Methoden der Klasse Java Basics - Anfänger-Themen 9
R Hashset.add(Array) liefert immer true? Java Basics - Anfänger-Themen 23
W Methoden Ausgabe true wenn nur Ziffern <= 1 vorhanden Java Basics - Anfänger-Themen 9
W Methoden "Fröhliche Zahl" true | false Java Basics - Anfänger-Themen 14
D Frage zu true false in Schleifen Java Basics - Anfänger-Themen 8
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
J Variablen Boolean true "übersetzen" in String Java Basics - Anfänger-Themen 10
S Variablen Prüfen, ob einer von vielen boolean true ist Java Basics - Anfänger-Themen 8
3 Collections containsKey() liefert false obwohl equals() true liefert Java Basics - Anfänger-Themen 6
S JTextArea mit LineWrap true viel zu groß! Java Basics - Anfänger-Themen 2
H while(true){} Java Basics - Anfänger-Themen 26
M isHidden() von java.io.File liefert immer true in Windows Java Basics - Anfänger-Themen 3
I wie definiere ich ja oder nein für true or false Java Basics - Anfänger-Themen 7
C warum liefert equals kein TRUE Java Basics - Anfänger-Themen 12
M true und false treiben mich ins Grab! Java Basics - Anfänger-Themen 5
algorismi Ausführungszeit Vergleich == true Java Basics - Anfänger-Themen 8
D "true" -> Boolean wird false?! Java Basics - Anfänger-Themen 6
D Array zufällig mit 1 oder 0 oder mit true oder false füllen Java Basics - Anfänger-Themen 5
S Elemente einer Liste mit true / false Werten Java Basics - Anfänger-Themen 3
C File.canWrite() immer true? Java Basics - Anfänger-Themen 12
K Frage zu "-Djava.awt.headless=true" und deploy in Java Basics - Anfänger-Themen 4
S if anweisung wird ausgeführt egal ob bedingung true o. false Java Basics - Anfänger-Themen 2
G while (true) ? wodurch wird diese Schleife beendet? Java Basics - Anfänger-Themen 6
O true false Java Basics - Anfänger-Themen 5
B JavaFilter true rückgabe Java Basics - Anfänger-Themen 23
K Primzahl//immer true Java Basics - Anfänger-Themen 7
M Swing Anwendung - boolean schaltet automatisch auf true Java Basics - Anfänger-Themen 2
G Fenster.setVisible(true); true -> false Zwischenwert? Java Basics - Anfänger-Themen 11
A Übungsaufgabe lösen - Problem mit true und false Java Basics - Anfänger-Themen 6
G setVisible(true) <--> toFront() Java Basics - Anfänger-Themen 3
M Per Button einer Funktion true oder false übermitteln? Java Basics - Anfänger-Themen 4
M if(b){ b=false}else{b=true} Java Basics - Anfänger-Themen 4
K public boolean contains (Object obj) > true or false Java Basics - Anfänger-Themen 16
M Problem beim ändern von Komponenten während Visible(true) Java Basics - Anfänger-Themen 4
S Problem mit setEnabled(true) Java Basics - Anfänger-Themen 3
C Shiften.euqals("bahnhof") == true; Java Basics - Anfänger-Themen 4
G Problem mit setVisible(true) Java Basics - Anfänger-Themen 10
V Beginner question with check true value??? Java Basics - Anfänger-Themen 3
G this. show() oder this.toFront() Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben