JFrame, Graphics, Panel - Tut nicht das was ich will

Guten Tag, ich bin MXOR…
Bin aus dem Forum java-forum.org gewechselt weil die site grade offline ist und habe gehört das es einen neuen Besitzer gibt…

Ich habe eine kleines Problem:

Ich will einen Ladebalken programmieren den ich dann mit setValue füllen kann…

Davon sollen dann mehrere auf ein JFrame…

Problem ist das immer nur das zuletzt geaddete Panel angezeigt wird? Kann mir jemand helfen bitte?

JFrame:

public class GUI_Balkenversuche extends JFrame {

	public static void main(String[] args) {

		GUI_Balkenversuche frame = new GUI_Balkenversuche();

	}

	int sizeX = 1618/2;
	int sizeY = 1000/2;
	
	public GUI_Balkenversuche() {
		setTitle("GUI_Balkenversuche");
		setSize(sizeX,sizeY);
		
		int hilfslinie1x = 10;

		
		PANEL_Balken panel1 = new PANEL_Balken(hilfslinie1x,10);
	    PANEL_Balken panel2 = new PANEL_Balken(hilfslinie1x,30);
	    
	    add(panel1);
	    add(panel2);
		
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		repaint(); 
		setVisible(true);
	}
}

JPanel:

public class PANEL_Balken extends JPanel {
	
	int posX;
	int posY;
	
	public PANEL_Balken(int posX,int posY){
		this.posX =posX;
		this.posY =posY;
	}
	
	public void paintComponent(Graphics g){
		
		 Graphics2D g2 =(Graphics2D) g;;
		 super.paintComponent(g);
	
		 Rectangle2D rect = new Rectangle2D.Double(posX,posY,244,22);
		 g2.setPaint(new Color(204,255,0));
		 g2.draw(rect);
		 	
	}

}

Ergebnis:

Vielen Dank
Mxor

Liegt am Default LayoutManager von JFrame. JFrame verwendet BorderLayout ein simples add fügt die Komponente immer im CENTER Bereich ein. Würde sagen das GridLayout könnte was für Dich sein - evtl. in Kombination mit BorderLayout.

Hinweis: Bei eigenen Komponenten möglichst die PreferredSize setzen bzw. die Methode entsprechend überschreiben, da einige LayoutManager sich an dieser Größe orientieren.

meist ist auch der Ansatz besser, nur EINER Komponente das gesamte Feld zu überlassen,
in deren paintComponent dann verschiedene Dinge malen zu lassen, etwa zwei Balken,

wie die organisiert sind ist davon recht unabhängig, können eigene Objekte in einer Liste sein,
aber dann recht klein nur mit x/y, keine riesigen eigenen Panel