Java, Swing getSize() funktioniert nicht
lima-city → Forum → Programmiersprachen → Java
abmessung
anpassen
anschreiben
auftreten
code
dimension
element
erfragen
fenster
frage
import
pack
pixel
problem
programm
stimmen
string
swing
update
windows
-
Hallo!
Eigentlich sinds zwei Probleme, denen ich gegenüber stehe.
Einerseits stimmen die Abmessungen von JFrames in meinem Programm nicht. Ich hab beispielsweise "896" als Breite angegeben, dargestellt werden aber nur 890 Pixel. Das ist sehr lästig, wenn man Elemente anpassen sollte...
Das Zweite war, dass ich die Höhe und Breite nicht erfragen konnte. Dies ist aber möglich, sobald das Fenster gerendert ist...
Leider stimmen die Werte aber immer noch nicht...
Mein System ist Windows 7 64bit.
Java: JRE 1.6 Update 30
Beitrag zuletzt geändert: 15.2.2012 13:10:42 von schrotti12 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Tach schrotti!
Gehst Du bei der Breite von Fensterbreite oder dem zeichnenden Contentpane aus? Hier wird ja mit zweierlei Maß gemessen wegen den insets für die Border.
Beim Erfragen von Höhe und Breite ist das logischerweise dasselbe Problem. Man müsste erst einmal wissen, was Du haben möchtest.
Gruss,
Pawnee -
Hat mir weiter geholfen. War tatsächich die externe Größe...
Nach einem pack() bekam ich die Insets richtig und konnte sie zur Größe dazu rechnen...
Das ganze sieht, in eine Klasse gepackt, dann so aus:
package testing; import java.awt.Dimension; import java.awt.Insets; import javax.swing.JFrame; public class JFrameGenerator { private JFrame m_frame; private int m_width; private int m_height; private String m_title; public JFrameGenerator(){ m_frame = new JFrame(); } public JFrameGenerator(String title, int width, int height){ m_title = title; m_width = width; m_height = height; m_frame = new JFrame(m_title); m_frame.pack(); Insets i = m_frame.getInsets(); m_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); m_frame.setPreferredSize(new Dimension(m_width + i.left + i.right, m_height + i.top + i.bottom)); m_frame.pack(); } public JFrame getFrame(){ return m_frame; } }
Erzeugt einen wunderschönen JFrame mit den passenden Innenabmessungen... -
Moin,
sehr schön. Dann schliesse ich einfach mal hier. Falls noch Fragen auftreten und das Thema wieder geöffnet werden soll, bitte per PN anschreiben.
Gruss,
Pawnee -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage