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?
Über eine Antwort würde ich mich freuen, und für Eure Mühe Dank im voraus.
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.