Die richtige Bildschirmgröße unter Java
Schon oft bin ich im Netz auf die Problematik gestossen: Taskleiste ist im Weg... oder die Zentrierung funktionert nicht 100%ig bei allen System.
Vielleicht ist das auch etwas kleinlich und man könnte die 30Pixel* der Taskleiste bei 864Pixel Bildschirmhöhe vernachlässigen. Aber ich fand das eher störend. In meiner Anwendung soll man die Bildschirmgröße prozentual einstellen können. Dann aber bitte zur sichtbaren Fläche und nicht zur Bildschirmgröße, sonst muss man unnötig in der Höhe 95% einstellen, nur weil die Taskleiste die Statuszeile überdeckt.
Hier ist jedenfalls ein Codeschnipsel, der hilft die richtige Größe zu berechnen:
// Bildschirmgröße ein guter Ausgangswert // Hier kommt im Netz selten gefundene Zeile: Das sichtbare Rechteck! .getMaximumWindowBounds(); // Jetzt kann man die Ränder berechnen... Insets _screenInsets = (int)_maxBounds.getY(), (int)_maxBounds.getX(), (int)(_screenDimension.getHeight() -_maxBounds.getY() - _maxBounds.getHeight()), (int)(_screenDimension.getWidth() - _maxBounds.getWidth() - _maxBounds.getX())); // ... und die Dimensionen der sichtbaren Bildschirmoberfläche. Dimension _screenDimensionView = (int)(_screenDimension.getWidth() - _screenInsets.right - _screenInsets.left), (int)(_screenDimension.getHeight() - _screenInsets.top - _screenInsets.bottom)); // nun ist ein Fenster mit exakter 75%iger Breite und Höhe und richtig // zentiert in greifbarer Nähe: { this.setSize( (int) (_screenDimensionView.getWidth() *.75 ), (int) (_screenDimensionView.getHeight() *.75 ) ); this.setLocation( (int)((_screenDimensionView.getWidth() - _widthPixels) / 2) + _screenInsets.left, (int)((_screenDimensionView.getHeight() - _heightPixels) / 2) + _screenInsets.top); this.setVisible(true); } }