bestaat er een soort grid (ruitjes veld) in java?

Status
Niet open voor verdere reacties.

sylvester-ponte

Verenigingslid
Lid geworden
19 apr 2007
Berichten
6.551
kent java of javax of...
een grid (een soort ruitjes veld)?
of moet dat zelf opgebouwd worden uit textFields?
 
Beste sylvester-ponte,

Bij mijn weten is er geen standaard grid te verkrijgen; dit vanwege het feit dat iedereen een grid weer anders wil representeren, plaatjes, alleen omlijning, 2d of 3d zijn hier enkele voorbeelden van.

Dus zul je zelf een grid moeten maken. Er is vast wel wat voorbeeld code via google te vinden, maar het zelf maken is natuurlijk veel leuker (we zijn immers programmeurs).
Ik denk dat we het maken van het grid moeten opsplitsen in twee zaken: de representatie en het model. De representatie gaat over het tonen van het grid en het model gaat over de opgeslagen data, groottes, aantal horizontale en verticale vlakjes etc.


In het simplistische grid voorbeeld hieronder heb ik geen gebruik gemaakt van een Vlak of Tile klasse. Dit is natuurlijk mooier en biedt ook meer functionaliteit. Een tile klasse kan namelijk andere data opslaan dan het, hieronder gegeven, simpele nummervoorbeeld.

PresenteerKlasse.java
Code:
...

private Grid myGrid = null;

public void createGrid(int horizontalSize, int verticalSize, int data[][]) {      
       
      myGrid = new Grid(horizontalSize, verticalSize);
      myGrid.feedData(data);
}

public void paintComponent(Graphic g) {
      .....
      drawGrid(myGrid, g);

}

public void drawGrid(Grid grid) {
     //om dit mooier te maken zou je een Vlak of Tile klasse kunnen maken en de waardes daarvan opvragen. Voor simpliciteit gebruik ik, in deze klasse gedefinieerde, maten (de tile klasse kan natuurlijk de maten en posities van de lijnen bevatten, dit kost hier minder rekenwerk).
     int HORIZONTAL_SIZE_TILE = 10;
     int VERTICAL_SIZE_TILE = 10;     
     
     for(int i=0; i < grid.getHorizontalSize(); i++) {
           for(int i=0; i < grid.getVerticalSize(); i++) {
                 //ik weet de methode zo niet meer, ik ga uit van x1, y1, x2, y2
                 //de horizontale lijnen per vlak, de verticale lijnen werken op dezelfde manier.
                 g.drawLine(i*HORIZONTAL_SIZE_TILE, i*VERTICAL_SIZE_TILE, (i+1)*HORIZONTAL_SIZE_TILE, (i+1)*VERTICAL_SIZE_TILE);          
                 ...
           }
     }
}

Grid.java
Code:
private int[][] tiles;

Grid(int horizontal, int vertical) {
     tiles = new int[horizontal][vertical]
}

public void feedData(int[][] data) {
      //ik ga er voor het gemak van uit dat de verticale en horizontale grootte gelijk zijn (gebruik anders horizontale en verticale grootte variabelen).     
      for(int horizontal = 0; horizontal < data.length / 2; horizontal++) {
           for(int vertical = 0; vertical < data.length / 2; vertical++) {
                 tiles[horizontal][vertical] = data[horizontal][vertical];
           }
      }
} 

public int getTileData(int x, int y) { //als je een tile klasse creeërd kan je natuurlijk andere data opvragen en geeft tiles[x][y] een Tile object terug (waar de data in zit).
     return tiles[x][y];
}

....
//creeër accessors en mutators (getters en setters).

//het belangrijkste is dat er geen teken-methodes in deze klasse zitten, dit is namelijk het model.

Groeten,
NewbiProgrammer
 
Laatst bewerkt:
Bedankt NewbiProgrammer,

Het duurde even, maar ik begrijp nu hoe de Grid werkt.:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan