The Grid doet in deze fase niets speciaals, maar met een beetje onderzoek kun je actie-luisteraars en een beetje logica toevoegen om een eenvoudig 2D-spel zoals tic-tac-toe of meer ingewikkelde zoals een slagschip te maken.
Opmerking: dit artikel gebruikt Eclipse[1] voor alle voorbeelden, dus de zaken kunnen verschillen, afhankelijk van uw IDE. Dit moet erg lijken op wat je nodig hebt in JCreator, maar het is nogal nutteloos voor een GUI-gebaseerde IDE zoals NetBeans[2] hoewel, voornamelijk vanwege de drag-and-drop methode van NetBeans.
Stappen
- 1 Maak een Java-project. Dit is vrij eenvoudig. Schakel uw IDE in en maak een nieuw project. Noem het wat je maar wilt. Het voorbeeld zal buttongrid zijn.
- Deze naam doet er eigenlijk niet toe, omdat dit alleen de bestandsnaam is die wordt gegeven.
- 2 Maak een Java-klasse met een hoofdmethode. Maak een nieuwe klas en geef hem een naam zoals je wilt. Het voorbeeld zal buttongrid zijn. Voor een Eclipse-gebruiker wil je het vak genaamd public static void main (string [] args) gebruiken, dus je hoeft het niet te typen als je start.
- Deze naam is belangrijker dan de vorige omdat het een enkel woord moet zijn, anders is het niet bruikbaar.
- 3 Importeer bibliotheken. Dit brengt alle informatie die je nodig hebt om je code te schrijven naar deze code. U moet javax.swing.JFrame, javax.swing.JButton en java.awt.Gridlayout importeren. Deze worden vóór het begin van de les gezet, ergens op regels tussen 1 en 3, de volgorde waarin ze zich daar bevinden doet er niet toe.
- 4 Maak een constructor. De constructor maakt een nieuw exemplaar van de klasse buttongrid, waardoor veel verschillende knoppenroosters allemaal afzonderlijke informatie kunnen hebben. Alle constructeurs moeten dezelfde naam krijgen als hun klas. Constructeurs hebben er niets voor nodig, maar 'publiek' wordt daar vaak geplaatst om ze gemakkelijk te kunnen raadplegen. Constructors worden vaak als de eerste methode in een klas geplaatst, dus het gaat direct achter de naam van de klas, maar het moet wel in de klas worden geplaatst. De constructeur van de buttongrid heeft parameters nodig die tussen haakjes achter de naam van de constructor worden geplaatst. De parameters in dit voorbeeld zijn gehele getallen 'x' en 'y'.
- 5 Maak kader:
- Het frame moet een naam hebben. Om er zeker van te zijn dat er naar verwezen kan worden buiten de ButtonGrid constructormethode plaats je het buiten kant van die methode, maar binnen de klasse. De meeste variabelen worden bovenaan de klasse genoemd vlak voor de constructor. Om een nieuw frame te maken typt u: JFrame frame = new JFrame ();
- Binnen de constructormethode moeten we ervoor zorgen dat alle knoppen in de rasterlay-out worden geplaatst. Om dit te doen, stellen we de layout van het frame in door te typen: frame.setLayout (nieuwe GridLayout (x, y));
- Niet noodzakelijkerwijs verplicht, maar om het frame te sluiten wanneer u op de knop 'x' in de rechterbovenhoek klikt, moeten we de regel toevoegen: frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
- Om het frame een goede maat te geven, zodat alles past, moeten we het pack-commando uitvoeren: frame.pack ();
- Als laatste voor het frame moeten we het zo maken dat het zichtbaar is: frame.setVisible (true);
- 6 Knopraster maken:
- De knoppen waarmee de gebruiker communiceert, moeten worden gemaakt, maar omdat we niet weten hoeveel we nodig hebben, moeten ze eerst worden genoemd. Dus direct onder de regel waar u een frame maakt, maakt u de knoppen: JButton [] [] raster; De twee sets vierkante haken zijn er om te zeggen dat de JButton's in het raster in een tweedimensionaal formaat worden gehouden, als er maar één set vierkante haakjes zou zijn, dan zou het gewoon een lijn van JButton's zijn, die nog steeds werkt, het is gewoon gemakkelijker om te verwijzen naar welke knop wordt gemaakt of waarmee wordt gecommuniceerd wanneer deze tweedimensionaal is.
- De JButton's zijn genoemd, maar we moeten nog steeds zeggen hoeveel knoppen er zijn. U moet een regel code toevoegen in de constructor die de hoeveelheid instelt: grid = new JButton [width] [length];
- Nu is vastgesteld dat er een bepaald aantal knoppen is, moet elk worden gemaakt. De gemakkelijkste manier om dit te doen is met twee for-lussen, één voor de x-as, één voor de y-as. Binnen de twee lussen maken we een nieuwe knop en ter vereenvoudiging van de verwijzing plaatst het voorbeeld tekst in elke knop, zodat we weten welke knop in de tweedimensionale matrix is waar. Om een knop aan te maken, moet u in de lus grid [x] [y] = nieuwe JButton ("(" + x + "," + y + ")");
- 7 Voeg knoppen toe aan kader. Binnen de loop moeten we de knoppen op het frame plaatsen met een eenvoudige opdracht: frame.add (raster [x] [y]);
- 8 Maak ButtonGrid Instance. In je hoofdklasse type: nieuwe ButtonGrid (3,3); De twee drieën maken een raster van 3 bij 3 en er kunnen twee positieve getallen in worden geplaatst.
- 9 Programma uitvoeren. Om dit in verduistering te doen, druk je op Ctrl + F11
- 10 Meer informatie over java: http://java.sun.com/j2se/1.4.2/docs/api/index-files/index-1.html
- Meer met knoppen: om de knoppen iets te laten doen, zoek je actionListener ()
Stappencode
- De hoofdklasse:
openbaar klasse ButtonGrid openbaar statisch leegte hoofd(Draad[] args)
- invoer:
importeren javax.swing.JFrame; importeren javax.swing.JButton; importeren java.awt.GridLayout; openbaar klasse ButtonGrid …
- Constructor Code:
openbaar klasse ButtonGrid openbaar ButtonGrid(int breedte, int lengte) …
- Frame Code:
openbaar klasse ButtonGrid JFrame montuur=nieuwe JFrame(); openbaar ButtonGrid(int breedte, int lengte) frame.setLayout(nieuwe GridLayout(breedte lengte)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pak(); frame.setVisible(waar); …
- Button Grid Code:
|JFrame montuur=nieuwe JFrame(); // maakt frame JButton[][] rooster; // noemt het raster van knoppen openbaar ButtonGrid(int breedte, int lengte) // constructor met 2 parameters frame.setLayout(nieuwe GridLayout(breedte lengte)); // set layout van frame rooster=nieuwe JButton[breedte][lengte]; // wijs de grootte van het raster toe voor(int Y=0; Y<lengte; Y++) voor(int X=0; X<breedte; X++) rooster[X][Y]=nieuwe JButton("("+X+","+Y+")"); frame.toevoegen(rooster[X][Y]); // voegt knop toe aan raster frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pak(); frame.setVisible(waar); …
- Knoppen aan het frame toevoegen:
voor(int Y=0; Y<lengte; Y++) voor(int X=0; X<breedte; X++) rooster[X][Y]=nieuwe JButton("("+X+","+Y+")"); frame.toevoegen(rooster[X][Y]); …
- Een knoprasterinstantie maken:
openbaar statisch leegte hoofd(Draad[] args) nieuwe ButtonGrid(3,3);// maakt nieuwe ButtonGrid met 2 parameters …
- Eindcode:
importeren javax.swing.JFrame; // importeert JFrame-bibliotheek importeren javax.swing.JButton; // importeert de JButton-bibliotheek importeren java.awt.GridLayout; // importeert bibliotheek GridLayout openbaar klasse ButtonGrid JFrame montuur=nieuwe JFrame(); // maakt frame JButton[][] rooster; // noemt het raster van knoppen openbaar ButtonGrid(int breedte, int lengte) // constructor frame.setLayout(nieuwe GridLayout(breedte lengte)); // set lay-out rooster=nieuwe JButton[breedte][lengte]; // wijs de grootte van het raster toe voor(int Y=0; Y<lengte; Y++) voor(int X=0; X<breedte; X++) rooster[X][Y]=nieuwe JButton("("+X+","+Y+")"); // maakt een nieuwe knop frame.toevoegen(rooster[X][Y]); // voegt knop toe aan raster frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pak(); // stelt de juiste grootte in voor frame frame.setVisible(waar); // maakt frame zichtbaar openbaar statisch leegte hoofd(Draad[] args) nieuwe ButtonGrid(3,3);// maakt nieuwe ButtonGrid met 2 parameters
importeer javax.swing.JFrame; // importeert JFrame bibliotheek import javax.swing.JButton; // importeert JButton bibliotheek import java.awt.GridLayout; // importeert bibliotheek GridLayout
public class ButtonGrid
JFrame frame = nieuw JFrame (); // maakt frame JButton [] [] raster; // noemt het raster van knoppen
public ButtonGrid (int width, int length) // constructor frame.setLayout (nieuwe GridLayout (breedte, lengte)); // set layout grid = new JButton [width] [length]; // wijs de grootte van het raster toe voor (int y = 0; y