Hoe maak je een GUI-raster in Java (met afbeeldingen)

Inhoudsopgave:

Hoe maak je een GUI-raster in Java (met afbeeldingen)
Hoe maak je een GUI-raster in Java (met afbeeldingen)

Video: Hoe maak je een GUI-raster in Java (met afbeeldingen)

Video: Hoe maak je een GUI-raster in Java (met afbeeldingen)
Video: Master de Mind - Baby kaartje traceren met Inkscape om als snij file te gebruiken voor vinyl 2024, April
Anonim

The Grid doet in dit stadium niets bijzonders, maar met een beetje onderzoek kun je actieluisteraars en een beetje logica toevoegen om een eenvoudig 2D-spel te maken, zoals boter-kaas-en-eieren, of meer gecompliceerde zoals Battleship.

Opmerking: in dit artikel wordt Eclipse gebruikt voor alle voorbeelden, dus de zaken kunnen verschillen, afhankelijk van uw IDE. Dit zou zeer vergelijkbaar moeten zijn met wat je nodig hebt in JCreator, maar het is nogal nutteloos voor een GUI-gebaseerde IDE zoals NetBeans, voornamelijk vanwege de slepen-en-neerzetten-methode van NetBeans.

Stappen

Maak een GUI-raster in Java Stap 1
Maak een GUI-raster in Java Stap 1

Stap 1. Maak een Java-project aan

Dit is vrij eenvoudig. Schakel uw IDE in en maak een nieuw project aan. Noem het hoe je maar wilt. Het voorbeeld is buttongrid.

Deze naam doet er helemaal niet toe, omdat het alleen de bestandsnaam is die eraan wordt gegeven

Maak een GUI-raster in Java Stap 2
Maak een GUI-raster in Java Stap 2

Stap 2. Maak een Java-klasse met een hoofdmethode

Maak een nieuwe klas en noem deze wat je wilt. Het voorbeeld is buttongrid. Voor een Eclipse-gebruiker wil je het vakje public static void main(string args) aanvinken, zodat je het niet hoeft te typen wanneer je begint.

Deze naam is belangrijker dan de vorige omdat het als enkel woord moet zijn, anders is het niet bruikbaar

Maak een GUI-raster in Java Stap 3
Maak een GUI-raster in Java Stap 3

Stap 3. Importeer bibliotheken

Dit brengt alle informatie die u nodig heeft om uw code naar deze code te schrijven. U moet javax.swing. JFrame, javax.swing. JButton en java.awt. Gridlayout importeren. Deze worden voor het begin van de les geplaatst, ergens tussen 1 en 3, de volgorde waarin ze erop staan maakt niet uit.

Maak een GUI-raster in Java Stap 4
Maak een GUI-raster in Java Stap 4

Stap 4. Maak een constructor

De constructor maakt een nieuwe instantie van de klasse buttongrid, waardoor veel verschillende knoppenrasters allemaal afzonderlijke informatie kunnen hebben. Alle constructors moeten dezelfde naam hebben als hun klasse. Constructeurs hebben er niets voor nodig, maar 'openbaar' wordt daar vaak geplaatst voor het gemak. Constructors worden vaak als eerste methode in een klasse geplaatst, dus het komt direct achter de klassenaam, maar het moet echter binnen de klasse worden geplaatst. De buttongrid-constructor heeft parameters nodig, die tussen haakjes achter de naam van de constructor staan. De parameters in dit voorbeeld zijn gehele getallen 'x' en 'y'.

Maak een GUI-raster in Java Stap 5
Maak een GUI-raster in Java Stap 5

Stap 5. Maak een kader:

  1. Het frame moet een naam hebben. Om er zeker van te zijn dat er buiten de ButtonGrid-constructormethode naar kan worden verwezen, plaatst u het buiten die methode, maar binnen de klasse. De meeste variabelen worden bovenaan de klasse genoemd, vlak voor de constructor. Om een nieuw frame te maken typ je: JFrame frame = new JFrame();
  2. Binnen de constructormethode moeten we ervoor zorgen dat alle knoppen in de rasterlay-out worden geplaatst. Om dit te doen stellen we de lay-out van het frame in door te typen: frame.setLayout(new GridLayout(x, y));
  3. Niet per se verplicht, maar om het frame te sluiten wanneer u op de 'x'-knop in de rechterbovenhoek drukt, moeten we de regel toevoegen: frame.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
  4. Om het frame de juiste maat te geven, zodat alles past, moeten we het pack-commando uitvoeren: frame.pack();
  5. Ten slotte moeten we het frame zo maken dat het zichtbaar is: frame.setVisible(true);

    Maak een GUI-raster in Java Stap 6
    Maak een GUI-raster in Java Stap 6

    Stap 6. Maak een knoppenraster:

    1. De knoppen waarmee de gebruiker interactie heeft, moeten worden gemaakt, maar omdat we niet weten hoeveel we er nodig hebben, moeten ze eerst een naam krijgen. Dus direct onder de regel waar je een frame maakt, maak je de knoppen: JButton grid; De twee sets vierkante haken zijn er om aan te geven dat de JButton's in het raster in een tweedimensionaal formaat worden gehouden, als er maar één set vierkante haken 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 gewerkt wanneer deze tweedimensionaal is.
    2. De JButton's hebben een naam gekregen, maar hoeveel knoppen er zijn moeten we nog zeggen. Je moet een regel code toevoegen in de constructor die het aantal instelt: grid=new JButton[width][length];
    3. Nu is vastgesteld dat er een bepaald aantal knoppen zal zijn, moet elk worden gemaakt. De eenvoudigste manier om dit te doen is met twee for-lussen, één voor de x-as en één voor de y-as. Binnen de twee lussen maken we een nieuwe knop, en voor het gemak plaatst het voorbeeld tekst in elke knop, zodat we weten welke knop in de tweedimensionale array waar is. Om een knop te maken, moet je in de lus grid[x][y] = new JButton ("("+x+", "+y+")");

      Maak een GUI-raster in Java Stap 7
      Maak een GUI-raster in Java Stap 7

      Stap 7. Voeg knoppen toe aan het frame

      Binnen de lus moeten we de knoppen op het frame plaatsen met een eenvoudig commando: frame.add(grid[x][y]);

      Maak een GUI-raster in Java Stap 8
      Maak een GUI-raster in Java Stap 8

      Stap 8. Maak een ButtonGrid-instantie

      Typ in je hoofdklasse: new ButtonGrid (3, 3); De twee drieën maken is een raster van 3 bij 3 en elke twee positieve getallen kunnen daarin worden geplaatst.

      Maak een GUI-raster in Java Stap 9
      Maak een GUI-raster in Java Stap 9

      Stap 9. Voer het programma uit

      Om dit in eclipse te doen, drukt u op Ctrl+F11

      Methode 1 van 1: Stappencode

      De hoofdklasse:

      openbare klasse ButtonGrid { public static void main (String args) { } }

      Invoer:

      javax.swing. JFrame importeren; javax.swing. JButton importeren; java.awt. GridLayout importeren; openbare klasse ButtonGrid { …

      Constructeurcode:

      openbare klasse ButtonGrid { public ButtonGrid(int width, int length){} } …

      Kadercode:

      openbare klasse ButtonGrid {JFrame frame=new Jframe(); public ButtonGrid(int breedte, int lengte){ frame.setLayout(nieuwe GridLayout(breedte, lengte)); frame.setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } } …

      Knop rastercode:

      |JFrame-frame=nieuwe JFrame(); // maakt frame JButton raster; // benoemt het raster van knoppen public ButtonGrid (int breedte, int lengte) { // constructor met 2 parameters frame.setLayout (nieuwe GridLayout (breedte, lengte)); //set lay-out van frame grid = nieuwe JButton [breedte] [lengte]; // wijs de grootte van het raster toe for(int y=0; y<lengte; y++){ for(int x=0; x<breedte; x++){ grid[x][y]=new JButton("("+ x+", "+y+")"); frame.add(raster[x][y]); // voegt knop toe aan raster } } frame.setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } …

      Knoppen aan frame toevoegen:

      for(int y=0; y<lengte; y++){ for(int x=0; x<breedte; x++){ grid[x][y]=new JButton("("+x+", "+y+")"); frame.add(raster[x][y]); } } …

      Een instantie van een knoppenraster maken:

      public static void main(String args) {new ButtonGrid(3, 3);//maakt nieuwe ButtonGrid met 2 parameters } …

      Definitieve code:

      javax.swing. JFrame importeren; // importeert JFrame bibliotheek import javax.swing. JButton; // importeert JButton bibliotheek import java.awt. GridLayout; // importeert de openbare klasse ButtonGrid van de GridLayout-bibliotheek {JFrame frame=new JFrame(); // maakt frame JButton raster; // benoemt het raster van knoppen public ButtonGrid (int breedte, int lengte) { //constructor frame.setLayout (nieuwe GridLayout (breedte, lengte)); //set layout grid=new JButton [breedte] [lengte]; // wijs de grootte van het raster toe voor (int y=0; y<lengte; y++){ for(int x=0; x<breedte; x++){ grid[x][y]=new JButton("("+ x+", "+y+")"); // maakt een nieuw knopframe.add (grid [x][y]); // voegt knop toe aan raster } } frame.setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE); frame.pack(); // stelt de juiste grootte in voor frame frame.setVisible (true); // maakt frame zichtbaar } public static void main (String args) { new ButtonGrid (3, 3);//maakt nieuw ButtonGrid met 2 parameters } }

      javax.swing. JFrame importeren; // importeert JFrame bibliotheek import javax.swing. JButton; // importeert JButton bibliotheek import java.awt. GridLayout; // importeert GridLayout-bibliotheek

      openbare klasse ButtonGrid {

      JFrame-frame=nieuwe JFrame(); // maakt frame JButton raster; // benoemt het raster van knoppen

      public ButtonGrid (int breedte, int lengte) { //constructor frame.setLayout (nieuwe GridLayout (breedte, lengte)); //set layout grid=new JButton [breedte] [lengte]; // wijs de grootte van het raster toe for(int y=0; y<lengte; y++){ for(int x=0; x<breedte; x++){ grid[x][y]=new JButton("("+ x+", "+y+")"); // maakt een nieuw knopframe.add (grid [x][y]); // voegt knop toe aan raster } } frame.setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE); frame.pack(); // stelt de juiste grootte in voor frame frame.setVisible (true); // maakt frame zichtbaar} public static void main (String args) {new ButtonGrid (3, 3);//maakt nieuw ButtonGrid met 2 parameters}

Aanbevolen: