Hallo,
schreibe gerade eine Applikation, die herausfinden soll, wo die (Windows) Taskleiste sich befindet und welche Maße sie hat.
Es geht darum, dass wenn ich in einem JFrame auf ein Textfeld klicke soll sich darunter eine Dialog öffnen, wenn Dialog sich aber mit der Taskleiste schneidet, dann soll es sich nach oben öffnen.
Hier mein Lösungsansatz um herauszufinden welche Fläche auf dem Bildschirm mir zur verfügung steht:
FrameInfoMax.java
Dazu öffne ich jedesmal ein jFrame im Maximalen zustand und gib dann die Maße aus.
Finde es etwas zu umständlich, funktioniert aber.
Vielleicht hat jemand eine andere Idee....
hiermit bekomme ich leider nur die absoluten Maße meines Bildschirms.
Hier noch die Main-Class
MainInfoAusgabe.java
schreibe gerade eine Applikation, die herausfinden soll, wo die (Windows) Taskleiste sich befindet und welche Maße sie hat.
Es geht darum, dass wenn ich in einem JFrame auf ein Textfeld klicke soll sich darunter eine Dialog öffnen, wenn Dialog sich aber mit der Taskleiste schneidet, dann soll es sich nach oben öffnen.
Hier mein Lösungsansatz um herauszufinden welche Fläche auf dem Bildschirm mir zur verfügung steht:
FrameInfoMax.java
Java:
package dimensionen;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
public class FrameInfoMax extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
public FrameInfoMax() {
super();
initialize();
}
private void initialize() {
this.setContentPane(getJContentPane());
this.setTitle("Frame Max");
this.setUndecorated(false);
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
}
return jContentPane;
}
public int getPositionX() {
return this.getLocationOnScreen().x + getOffset();
}
public int getPositionY() {
return this.getLocationOnScreen().y + getOffset();
}
public int getDimensionWidth() {
return this.getSize().width - (2 * getOffset());
}
public int getDimensionHeight() {
return this.getSize().height - (2 * getOffset());
}
private int getOffset() {
return jContentPane.getLocationOnScreen().x - this.getLocationOnScreen().x;
}
}
Dazu öffne ich jedesmal ein jFrame im Maximalen zustand und gib dann die Maße aus.
Finde es etwas zu umständlich, funktioniert aber.
Vielleicht hat jemand eine andere Idee....
Java:
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
Hier noch die Main-Class
MainInfoAusgabe.java
Java:
package dimensionen;
import java.awt.Point;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class FrameInfoAusgabe implements WindowListener {
private FrameInfoMax fMax = null;
public Point LO = null;
public Point RO = null;
public Point LU = null;
public Point RU = null;
public FrameInfoAusgabe() {
fensterOeffnen();
}
public static void main(String[] args) {
new FrameInfoAusgabe();
}
public void windowOpened(WindowEvent arg0) {
setzeWerte(arg0);
}
private void fensterOeffnen() {
if (fMax == null) {
fMax = new FrameInfoMax();
fMax.addWindowListener(this);
fMax.setVisible(true);
}
}
private void fensterSchliessen() {
if (fMax != null) {
fMax.setVisible(false);
fMax.dispose();
fMax = null;
}
}
private void setzeWerte(WindowEvent arg0) {
LO = new Point(fMax.getPositionX(), fMax.getPositionY());
RO = new Point((fMax.getDimensionWidth() + fMax.getPositionX()), fMax.getPositionY());
LU = new Point(fMax.getPositionX(), (fMax.getDimensionHeight() + fMax.getPositionY()));
RU = new Point((fMax.getDimensionWidth() + fMax.getPositionX()), (fMax.getDimensionHeight() + fMax
.getPositionY()));
fensterAusgabe();
fensterSchliessen();
}
public void fensterAusgabe() {
System.out.println("LO: " + LO.x + " " + LO.y);
System.out.println("RO: " + RO.x + " " + RO.y);
System.out.println("LU: " + LU.x + " " + LU.y);
System.out.println("RU: " + RU.x + " " + RU.y);
}
public void windowClosed(WindowEvent arg0) {
}
public void windowClosing(WindowEvent arg0) {
}
public void windowDeactivated(WindowEvent arg0) {
}
public void windowDeiconified(WindowEvent arg0) {
}
public void windowIconified(WindowEvent arg0) {
}
public void windowActivated(WindowEvent arg0) {
}
}