Archief - JAVA: Gridlayout in panel

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Blad3z

Legacy Member
Ben hier terug =)

Ik moet een 20-tal vierkanten in een panel krijgen.
4 rijen, 5 kolommen.

Dit is mijn doel:
roosterc.jpg


Zo ziet het er momenteel uit:

knipselp.jpg



Maar ik ben waarschijnlijk verkeerd bezig door 20 objecten aan te maken en dan telkens toe te voegen?
Zo staat het momenteel:

Code:
package view;
import java.awt.*;
import javax.swing.*;
import view.rm_panel;

public class rm_kleur extends rm_layout {
	public rm_kleur() {
		rm_panel flowlayout = new rm_panel(Color.GRAY, 100,100);
		rm_panel gridlayout = new rm_panel(Color.YELLOW, 100,700);

		
		GridLayout grid = new GridLayout(4,5);
		rm_panel kotje1 = new rm_panel(Color.RED,20,20);
		rm_panel kotje2 = new rm_panel(Color.RED,20,20);
		rm_panel kotje3 = new rm_panel(Color.RED,20,20);
		rm_panel kotje4 = new rm_panel(Color.RED,20,20);
		rm_panel kotje5 = new rm_panel(Color.RED,20,20);
		rm_panel kotje6 = new rm_panel(Color.RED,20,20);
		rm_panel kotje7 = new rm_panel(Color.RED,20,20);
		rm_panel kotje8 = new rm_panel(Color.RED,20,20);
		rm_panel kotje9 = new rm_panel(Color.RED,20,20);
		rm_panel kotje10 = new rm_panel(Color.RED,20,20);
		rm_panel kotje11 = new rm_panel(Color.RED,20,20);
		rm_panel kotje12 = new rm_panel(Color.RED,20,20);
		rm_panel kotje13 = new rm_panel(Color.RED,20,20);
				

		grid.setRows(4);
		grid.setColumns(5);
		grid.setVgap(50);
		grid.setHgap(50);
		gridlayout.setLayout(grid);
		gridlayout.add(kotje1);
		gridlayout.add(kotje2);
		gridlayout.add(kotje3);
		gridlayout.add(kotje4);
		gridlayout.add(kotje5);
		gridlayout.add(kotje6);
		gridlayout.add(kotje6);
		gridlayout.add(kotje7);
		gridlayout.add(kotje8);
		gridlayout.add(kotje9);
		gridlayout.add(kotje10);
		gridlayout.add(kotje11);
		gridlayout.add(kotje12);
		
		
		this.getContentPane().add(flowlayout, BorderLayout.NORTH);
		this.getContentPane().add(gridlayout, BorderLayout.SOUTH);
		
	}
}

NeverwinterX

Legacy Member
Hoe ziet die rm_panel eruit?
Het lijkt me dat al die kotjes tesamen gewoon te groot zijn om te tonen binnen het scherm van de applicatie. Probeer de size van de kotjes of de applicatie aan te passen (hardcoded, of beter nog dynamisch).
Hier wat extra info: How to Use GridLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)

Hou je aan de Java naamgeving conventies: klassennamen met hoofdletter.
Gebruik een for of while loop voor al die kotjes.
Het is énorm verwarrend dat je de eigenlijke grid paneel de gridlayout noemt en de gridlayout de grid...

Blad3z

Legacy Member
Hoe meer kotjes ik toevoeg, hoe kleiner ze worden. (soort fit to window?)

rm_panel ziet er zo uit:

Code:
package view;
import java.awt.*;
import javax.swing.JPanel;

public class rm_panel extends JPanel {
	
	public rm_panel(Color col) {
		this.setBackground(col);
	}

	public rm_panel(Color col, int width, int height) {
		this.setPreferredSize(new Dimension(width,height));
		this.setBackground(col);
		
		
	}
	
	
}

Blad3z

Legacy Member
Hoe gaat die for-loop dan in zijn werk om object aan te maken?
Kotje1 kan toch maar 1x bestaan?

for(int i = 0; i < 21; i++) {
rm_panel kotje1 = new rm_panel(Color.RED,20,20);
}

NeverwinterX

Legacy Member
Blad3z zei:
Hoe gaat die for-loop dan in zijn werk om object aan te maken?
Kotje1 kan toch maar 1x bestaan?

for(int i = 0; i < 21; i++) {
rm_panel kotje1 = new rm_panel(Color.RED,20,20);
}

Klassieke beginnersdenkfout:
Je wilt niet voor al die kotjes een aparte variabele. Je gaat al die kotjes in een of andere container steken waar je die dan uit kan halen met een methode of over loopen via de for each. Dat kan een ArrayList, array, JPanel... zijn.

E0x4

Legacy Member
en als je met threads werkt, gebruik je best een vector omdat deze thread safe zijn en anders gewoon een array/arraylist/... dus ik zou gewoon een arraylist in u geval gebruiken ;)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan