Größe eines Fensters ermitteln

Status
Nicht offen für weitere Antworten.

hawkeye78

Bekanntes Mitglied
Hallo,

ich bin mir nicht so ganz sicher ob ich besser hier oder besser im Anfängerbereich mit meiner Frage aufgehoben bin. Aber da es sich ja eigentlich um eine Frage für GUI-Programmierung handelt poste ich mal hier hin und hoffe das der Admin dann die Frage entsprechend umstellt :).
Um nun mal auf meine Frage zu sprechen zu kommen, ich würde gerne eine kleine Uhr schreiben wo die Größe des Zifferblattes und die Zeiger von der Grösse des Fensters abhängt. Aus diesem Grund würde ich gerne zunächst die Größe des Fensters ermitteln bevor ich dort das Zifferblatt hinein zeichne. Ich habe irgendwo gelesen das es logischerweise von der Auflösung des Bildschirmes abhängt. Aber leider habe ich dort keinen entsprechenden Befehl für die Fenstergrösse gefunden.
Ich wäre über einen entsprechenden Tipp auf jeden Fall sehr dankbar.
Gruß
Dan
 
B

Beni

Gast
Jede Component (egal ob Window, Frame oder Button) hat eine Methode 'getSize()'.

Das kannst du in der API nachlesen.

Am besten malst du nicht direkt auf ein Frame, sondern auf ein Panel (oder JPanel, wenn du Swing verwendest), dann stimmen der sichtbare Bereich und getSize auch ueberein (ansonsten wird der sichtbare Bereich durch den Titel des Frames verkleinert).
 

Bert Brenner

Bekanntes Mitglied
Wenn dein Fenster von java.awt.Component abstammt dann mit:

getSize();

Edit: Die Methode von Beni würd ich aber auch vorziehen, damit du gleich die Grösse der Fläche bekommst die du vollzeichnen möchtest.
 

mic_checker

Top Contributor
Meinst du Auflösung oder Größe ? Einfach nur Größe sollte eigentlich mit getSize() gehen.

edit: zu langsam
 

hawkeye78

Bekanntes Mitglied
Hallo

vielen Dank für diese zahlreichen Posting, und eure schnelle Hilfe, vielleicht sollte ich in Zukunft doch etwas sorgfälltiger die API lesen :).
Allerdings stehe ich nun vor einem anderen Problem nämlich das ich es nicht hinbekomme einen runden(!) Kreis in das Fenster zu zeichnen. Mein Programmcode schaut momentan so aus:

Klasse für den Aufruf des Programms:
Code:
public class aufruf
{
	public static void main(String args[])
	{
		Uhr U1;
		
		U1=new Uhr();
		
		U1.setSize(200,200);
		U1.show();		
	}
}

Methode zum Zeichnen des Kreises
Code:
public class Uhr
extends Frame
implements WindowListener
{
	Uhr()
	{
		// Festlegen der Bezeichnung fürs Fensters
		super("Uhr");
		
		addWindowListener(this);              // Hinzufügen der WindowListener	
	}
	
	public void paint(Graphics g)
	{
		g.drawOval(10,35,this.getSize().width-18,this.getSize().height-45);
		
		System.out.println(this.getSize().width);
		System.out.println(this.getSize().height);
	}

// Methoden für die listener..
}

Leider wird der Kreis alles mögliche bloß nicht rund und ich bin im moment ziemlich ratlos wie ich es mit den entsprechenden Parametern hinbekomme.
Gruß
Dan
 

mic_checker

Top Contributor
Du hast unterschiedliche Parameter für Höhe/Breite, dann ist ja klar das du keinen richtigen Kreis zeichnest.
 

hawkeye78

Bekanntes Mitglied
Hallo,

noch einmal vielen dank für dein Posting. Aber leider funktioniert das so

Code:
public void paint(Graphics g) 
   { 
      g.drawOval(10,35,this.getSize().width-10,this.getSize().height-35); 
       
      System.out.println(this.getSize().width); 
      System.out.println(this.getSize().height); 
   }

auch nicht.
Gruß
Dan
 

mic_checker

Top Contributor
Code:
g.drawOval(10,35,this.getSize().width-10,this.getSize().height-35);
Du gibst die Höhe/Breite an, wenn Höhe Fenster == Breite Fenster, ist somit die Höhe/Breite des Kreises nicht gleich und es wird kein runder Kreis gezeichnet. Das meinte ich mit den Parametern.
 

hawkeye78

Bekanntes Mitglied
ich verstehe jetzt was du meinst vielen dank. Aber in welcher Form kann ich es jetzt angeben das er mir doch einen kreis zeichnet? Ich sehe im moment keine wirklich lösung meinst du vielleicht so?
Code:
g.drawOval(0,0,this.getSize().width,this.getSize().height);
 

mic_checker

Top Contributor
Theoretisch ja, in deinem Fall sind Höhe/Breite ja gleich.....Ansonsten musst du halt das ganze entsprechend vorher festlegen,also falls Höhe != Breite.
 

Illuvatar

Top Contributor
Du könntest den kleineren der Werte nehmen:
Code:
int val = ((this.getSize().width) < (this.getSize().height-25)) ? (this.getSize().width-10) : (this.getSize().height-35);
g.drawOval (10, 35, val, val);
 

hawkeye78

Bekanntes Mitglied
Hallo Illuvatar,

noch einmal vielen Dank für eure Postings, ich habe es mittlerweile wirklich so gelöst das ich den kleinsten möglichen Wert genommen habe

Code:
		int y=this.getInsets().top;
		int x=this.getInsets().left;
		int breite=(this.getSize().width-(this.getInsets().left+this.getInsets().right));
		int hoehe=(this.getSize().height-(this.getInsets().top+this.getInsets().bottom));
		
		// Ermittlung der maximalen Fläche für das Zifferblatt
		if(breite!=hoehe)
		{
			if(breite<hoehe)
			{
				hoehe=hoehe-(hoehe-breite);
			}
			
			if(breite>hoehe)
			{
				breite=breite-(breite-hoehe);
			}
		}
		
		// Zeichnen des Kreises
		g.drawOval(x,y,hoehe,breite);

Ich bin zwar fest davon überzeugt das es einen eleganteren Weg gibt dieses zu lösen aber auf jeden Fall funktioniert es so :D.
Noch einmal vielen dank für euere Hilfe.
Gruß
Dan
 

Bert Brenner

Bekanntes Mitglied
Du brauchst keine Variable für hoehe und breite.

Nimm eine und nenn sie z.b.

Code:
int groesse = Math.min(this.getSize().width-(this.getInsets().left+this.getInsets().right),
                       this.getSize().height-(this.getInsets().top+this.getInsets().bottom));
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Swing Größe eines Fensters JFrame / Frame AWT, Swing, JavaFX & SWT 5
B veränderte Größe eines Panels im Vorhinein wissen? AWT, Swing, JavaFX & SWT 1
U Größe eines Button im Menü ändern AWT, Swing, JavaFX & SWT 1
T Swing Aktuelle Größe eines Textes in einem Label darstellen AWT, Swing, JavaFX & SWT 3
I Größe eines rotierten Images AWT, Swing, JavaFX & SWT 3
S Die größe eines JButton ändern AWT, Swing, JavaFX & SWT 7
U feste Größe für den Zeichenbereich eines JFrames AWT, Swing, JavaFX & SWT 4
R Größe eines Labels bei GridBagLayout festlegen AWT, Swing, JavaFX & SWT 9
R Swing Größe eines Buttons ändern AWT, Swing, JavaFX & SWT 9
J SWT Größe eines Composite mit Gridlayout festlegen AWT, Swing, JavaFX & SWT 2
P Swing Größe eines JPanels bestimmen (ohne Border!) AWT, Swing, JavaFX & SWT 2
A Größe eines JFrames immer nur quadratisch AWT, Swing, JavaFX & SWT 8
M Anpassen der Größe eines JPanels (incl. gezeichneter Ampel) AWT, Swing, JavaFX & SWT 2
H Problem mit der Größe eines Dialogs mit ExpandBar AWT, Swing, JavaFX & SWT 2
A Problem der Größe von JCheckBox nach Hinzufügen eines Popups AWT, Swing, JavaFX & SWT 2
M Wirkliche Größe eines JPanels/o.ä. ermitteln AWT, Swing, JavaFX & SWT 3
A Größe eines JButton AWT, Swing, JavaFX & SWT 3
G Größe eines JPanels beeinflussen AWT, Swing, JavaFX & SWT 5
G JTextfield Größe mit der Größe eines JTable Syncronisieren? AWT, Swing, JavaFX & SWT 2
S JButton auf verkleiner auf größe eines Icons AWT, Swing, JavaFX & SWT 5
G Größe eines Applets bestimmen AWT, Swing, JavaFX & SWT 6
A Größe eines JTextField beeinflussen AWT, Swing, JavaFX & SWT 5
N Rahmen zum editieren der Größe eines JComponents? AWT, Swing, JavaFX & SWT 2
M Größe eines JPanels ändern.aber wie? AWT, Swing, JavaFX & SWT 2
L Größe eines JLabels an enthaltenen Text anpassen AWT, Swing, JavaFX & SWT 2
L Größe (in Byte) eines Image ermitteln AWT, Swing, JavaFX & SWT 2
T Größe und Position eines JLabels ermitteln AWT, Swing, JavaFX & SWT 3
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
H JDialog in Größe ändern - Resize-Cursor bleibt betreten der Komponente AWT, Swing, JavaFX & SWT 1
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
Yonnig JavaFX Größe von WebView an Content anpassen AWT, Swing, JavaFX & SWT 3
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
D JavaFX Größe des Bild an ImageView anpassen AWT, Swing, JavaFX & SWT 3
B Dynamische ListView-Größe, die bei Fenstergrößenänderung sich anpasst AWT, Swing, JavaFX & SWT 19
R Swing JTextField - Schriftgröße je nach Länge und Größe ändern AWT, Swing, JavaFX & SWT 0
B Größe der Parent-Component dynamisch an children anpassen AWT, Swing, JavaFX & SWT 30
L JavaFX AnchorPane an die Größe der Scene oder Window binden? AWT, Swing, JavaFX & SWT 3
K JavaFX Component Größe an Inhalt anpassen AWT, Swing, JavaFX & SWT 11
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
R Größe von Scene und stage an grid anpassen AWT, Swing, JavaFX & SWT 4
M Java FX größe der shapes anpassen AWT, Swing, JavaFX & SWT 0
L Swing JPanel Größe anpassen AWT, Swing, JavaFX & SWT 6
E Wie kann ich ein JLabel auf größe der schriftlänge setzten? AWT, Swing, JavaFX & SWT 2
C Swing JFrame ändert Größe AWT, Swing, JavaFX & SWT 0
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
J Swing Pane im SplitPane automatische Größe aktivieren AWT, Swing, JavaFX & SWT 0
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
L JavaFX ListView Größe anpassen AWT, Swing, JavaFX & SWT 1
Neumi5694 Größe von Komboboxen neu berechnen AWT, Swing, JavaFX & SWT 3
L JavaFX List oder TableView Größe dynamisch anpassen? AWT, Swing, JavaFX & SWT 4
P Größe und Ausrichtung von Komponenten festlegen AWT, Swing, JavaFX & SWT 13
I CSS - backgroundImage - Größe automatisch an den Container anpassen AWT, Swing, JavaFX & SWT 1
C Größe des Mauszeigers ermitteln AWT, Swing, JavaFX & SWT 5
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
K GridBagLayout verändert die größe? AWT, Swing, JavaFX & SWT 1
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
D JavaFX Alle Knöpfe auf die gleiche Größe AWT, Swing, JavaFX & SWT 14
G JFrame - manuell Größe verändern AWT, Swing, JavaFX & SWT 6
M LayoutManager GridBagLayout passt seine größe nicht an AWT, Swing, JavaFX & SWT 3
F Gui weicht von Designpreview ab (kein fensterrahmen, andere größe) AWT, Swing, JavaFX & SWT 13
A JPanel größe verändern AWT, Swing, JavaFX & SWT 4
M SWT ScrollPane Größe zu klein AWT, Swing, JavaFX & SWT 6
T Swing Größe einer Komponente in einem BoxLayout / FlowLayout festlegen AWT, Swing, JavaFX & SWT 7
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
W GridBagLayout Größe geben AWT, Swing, JavaFX & SWT 1
S Swing JFrame hat nicht die Größe, die ich eingegeben habe AWT, Swing, JavaFX & SWT 3
S Größe der Komponenten, beim ändern der größe des Frames, mit ändern! AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
D Swing Jlist Größe während der Laufzeit verändern. AWT, Swing, JavaFX & SWT 11
H AWT Fenster- und JLabel-Größe automatisch anpassen AWT, Swing, JavaFX & SWT 2
T Swing Größe des Randes AWT, Swing, JavaFX & SWT 2
C LayoutManager JFrame größe und ausrichtung + Position von Fensterelementen AWT, Swing, JavaFX & SWT 2
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
D SWT Window passt Größe nicht an AWT, Swing, JavaFX & SWT 4
N JPanel größe wissen/festlegen vor dem Anzeigen AWT, Swing, JavaFX & SWT 3
G JavaFX Größe der Parentknoten AWT, Swing, JavaFX & SWT 5
R JPanel-Größe verändert sich nicht. Warum? AWT, Swing, JavaFX & SWT 5
A JPanel oder GridLayout Größe festsetzten AWT, Swing, JavaFX & SWT 4
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
SimonRap Swing JFrame Größe zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Größe der JFrame Decorations herausfinden? AWT, Swing, JavaFX & SWT 4
O Swing Jpanel autom. auf JFrame Größe bringen AWT, Swing, JavaFX & SWT 6
M Swing JLabel mit fester größe nachträglich formatieren AWT, Swing, JavaFX & SWT 2
A JComponent Größe AWT, Swing, JavaFX & SWT 8
S Größe von Panel verändern welches auf anderem Panel sitzt AWT, Swing, JavaFX & SWT 10
B JTextArea Größe an Container anpassen AWT, Swing, JavaFX & SWT 2
S Swing TextPane größe beschränken AWT, Swing, JavaFX & SWT 2
R Ellipse2D ändert Größe AWT, Swing, JavaFX & SWT 3
H Swing JButton größe ändern AWT, Swing, JavaFX & SWT 5
G JScrollPane reagiert nicht auf Änderung der JPanel-Größe AWT, Swing, JavaFX & SWT 4
P JPanel Größe ändern AWT, Swing, JavaFX & SWT 22
C Button Größe einstellen klappt nicht (setBounds) AWT, Swing, JavaFX & SWT 8
S 2D-Grafik Canvas Problem(Größe) AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben