Panel mit 8 gleich großen "fenstern"

regic

Mitglied
Hallo Leute,

ich sitze hier jetzt schon seit mindestens 1ner Stunde, und schaffe es nicht folgendes zu realisieren.

Ich habe ein Panel und auf diesem sollten 8 Rechtecke gezeichnet werden, nun das sollte aber so sein dass diese gleich groß sind, und vor und nach diesem Rechteck, eine an die Größe des Rechtecks angepassten, Abstand. Das panel kann natürlich eine andere Dimension annehmen, also muss das mit der weite berechnet werden!!

Wisst ihr was ich meine?? Hoffe schon 😀D


Danke im Voraus
regic
 
Zuletzt bearbeitet:
Ich weiß zwar nicht wirklich was du meinst, aber falls es sich um Swing-Objekte handelt, die du auf dein Panel klatschen willst hört sich das nach GridLayout an wonach du suchst.
 
nein,nein... ich meinte ein Panel das beliebig groß sein kann, und auf dem werden dann mittels Graphics g mehrere Rechtecke gezeichnet. allerdings sollten die so sein das da z.b 5 px abstand dann das rechteck und dann wieder 5 px abstand.. so sollte sich das dann auf beiden seiten ausgehen das da 5px abstand sind.

Wars jetzt besser erklärt??


//im anhang ist das was ich will, doch das sollte ehm berechnet werden, und somit immer passen egal wie groß das Panel ist //EDIT: Ok das bild stimmt nicht ganz, da der zwischenraum eigentlich doppelt so groß sein müste aber ihr wisst doch was ich meine??
 

Anhänge

  • beispiel.jpg
    beispiel.jpg
    50 KB · Aufrufe: 28
Zuletzt bearbeitet:
du teils die größe des panels durch die der anzahl der rechtecke+die ränder und schon hast du die länge....

EDIT: mist zu langsam -.-
 
Zuletzt bearbeitet:
das ist mir schon klar, aber das funktioniert so leider nicht, es geht sich nie aus, am ende ist der abstannd immer größer, also ganz links
ich fange rechts an zu zeichnen
 
Prüfst du Pixelgenau? Dann ist es meistens kein Wunder, bei der Division wird was übrig bleiben und einen halben Pixel kannst du nicht zeichnen. ^^
 
ich prüfe das nur so wie es mit dem freien auge erkennpaar ist, und am ende bleibt immer viel mehr übrig als der restliche abstand
 
Bedenkst du auch, dass du zwar 8 Rechtecke hat, aber nur 7 "Abstände" hast? Oder 9, wenn du außen auch noch Platz frei lassen willst. Aber bevor mal hin und her rätselt: zeig doch mal dein Code.
 
Bei mir funktioniert das problemlos:

Java:
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class PaintRecsExample {
	private static final int HGAPS = 5;
	private static final int VGAPS = 5;
	
	private static final int H_RECT_COUNT = 4;
	private static final int V_RECT_COUNT = 4;
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				buildGui();
			}
		});
	}
	private static void buildGui() {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(500, 500);
		
		frame.add(new JPanel() {
			protected void paintComponent(Graphics g) {
				super.paintComponent(g);
				g.setColor(Color.RED);
				
				int recWidth = (getWidth() - HGAPS * (H_RECT_COUNT + 1)) / H_RECT_COUNT;
				int recHeight = (getHeight() - VGAPS * (V_RECT_COUNT + 1)) / V_RECT_COUNT;
								
				for(int y = 0; y < V_RECT_COUNT; y++) {
					for(int x = 0; x < H_RECT_COUNT; x++) {
						int pxX = HGAPS + (x * HGAPS + x * recWidth);
						int pxY = VGAPS + (y * VGAPS + y * recHeight);
						
						g.drawRect(pxX, pxY, recWidth, recHeight);
					}
				}
			}
		});
		
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
}
 
Java:
int width=getWidth();
	
for(int i = 0; i <8;i++){
	
   g.drawRect(5+(width/8)*i, 5,width/8-5, 600);
				
}

das sieht eigentlich richtig aus, aber nur bei meinem bildschirm(ich habe das panel auf vollbild gestellt)
 

Neue Themen


Zurück
Oben