Java (Swing): Ermitteln der Bildschirmgröße * einer Komponente, wenn die Größe des Fensters geändert wird

8

Ich muss die genaue Bildschirmgröße einer Komponente in Pixeln finden, wenn die Größe des Haupt-JFrames geändert wird.

Ich habe mehrere Dinge ausprobiert und konnte keinen einfachen Weg finden, es zu tun: es hat wahrscheinlich etwas Offensichtliches verpasst.

%Vor%

Die Größe kann geändert werden, wenn der Benutzer beispielsweise den Haupt-JFrame kürzer (vertikal) und breiter (horizontal) gemacht hat:

%Vor%

Was ich will, ist, die genaue Größe des rechteckigen Bereichs in Pixel auf dem Bildschirm zu finden, der durch Punkte angezeigt wird.

Ich füge ein ComponentListener hinzu, um die Größenänderungsereignisse zu erhalten, was gut funktioniert.

Das Problem ist, dass der Aufruf von getWidth () / getHeight () für eine Komponente scheinbar nicht die Bildschirmgröße der Komponente zurückgibt, aber die tatsächliche Größe der Komponente (und Sie können beispielsweise haben , ein JPanel breiter als die Komponente es ist).

Jeder Hinweis ist sehr willkommen.

    
SyntaxT3rr0r 18.05.2010, 18:57
quelle

3 Antworten

9

Sie suchen JComponent.getVisibleRect ( ) .

    
Nate 18.05.2010, 19:40
quelle
1

getWidth() und getHeight() gibt die Breite und Höhe der Komponente zurück. Ich habe noch nie von einem Unterschied zwischen "tatsächlicher" Breite / Höhe und "Bildschirm" Breite / Höhe gehört.

Einige Layout-Manager füllen das Panel jedoch nicht mit einer Komponente, die es enthält, und ein gewisser Abstand zwischen der Komponente und der Panel-Kante ist möglicherweise nicht von der Komponente belegt. In diesem Fall verwende ich normalerweise setBackground(Color.BLUE) auf dem darunterliegenden Panel, um zu sehen, was passiert.

    
aioobe 18.05.2010 19:03
quelle
0

Das ist ein sehr miserabler Weg, aber Sie können ein Wrapper-Panel verwenden, in das Sie Ihr Hauptpanel legen. Dann können Sie getWidth() und getHeight() über das Wrapper-Panel aufrufen.

    
Martijn Courteaux 18.05.2010 19:09
quelle

Tags und Links