Java LayoutManagers
De LayoutManagers worden gebruikt om componenten op een bepaalde manier te rangschikken. De Java LayoutManagers vergemakkelijkt het ons om de positionering en grootte van de componenten in GUI-formulieren te controleren. LayoutManager is een interface die door alle klassen van lay-outmanagers wordt geïmplementeerd. Er zijn de volgende klassen die de lay-outmanagers vertegenwoordigen:
- java.awt.BorderLayout
- java.awt.FlowLayout
- java.awt.GridLayout
- java.awt.CardLayout
- java.awt.GridBagLayout
- javax.swing.BoxLayout
- javax.swing.GroupLayout
- javax.swing.ScrollPaneLayout
- javax.swing.SpringLayout etc.
Java BorderLayout
De BorderLayout wordt gebruikt om de componenten in vijf regio's te rangschikken: noord, zuid, oost, west en midden. Elke regio (gebied) mag slechts één component bevatten. Het is de standaardindeling van een frame of venster. De BorderLayout biedt vijf constanten voor elke regio:
Constructeurs van de BorderLayout-klasse:
Voorbeeld van de klasse BorderLayout: De constructor BorderLayout() gebruiken
Bestandsnaam: Border.java
import java.awt.*; import javax.swing.*; public class Border { JFrame f; Border() { f = new JFrame(); // creating buttons JButton b1 = new JButton('NORTH');; // the button will be labeled as NORTH JButton b2 = new JButton('SOUTH');; // the button will be labeled as SOUTH JButton b3 = new JButton('EAST');; // the button will be labeled as EAST JButton b4 = new JButton('WEST');; // the button will be labeled as WEST JButton b5 = new JButton('CENTER');; // the button will be labeled as CENTER f.add(b1, BorderLayout.NORTH); // b1 will be placed in the North Direction f.add(b2, BorderLayout.SOUTH); // b2 will be placed in the South Direction f.add(b3, BorderLayout.EAST); // b2 will be placed in the East Direction f.add(b4, BorderLayout.WEST); // b2 will be placed in the West Direction f.add(b5, BorderLayout.CENTER); // b2 will be placed in the Center f.setSize(300, 300); f.setVisible(true); } public static void main(String[] args) { new Border(); } }
Uitgang:
download dit voorbeeldVoorbeeld van de klasse BorderLayout: De constructor BorderLayout(int hgap, int vgap) gebruiken
In het volgende voorbeeld worden horizontale en verticale openingen tussen knoppen ingevoegd met behulp van de geparametriseerde constructor BorderLayout(int hgap, int gap)
Bestandsnaam: BorderLayoutExample.java
// import statement import java.awt.*; import javax.swing.*; public class BorderLayoutExample { JFrame jframe; // constructor BorderLayoutExample() { // creating a Frame jframe = new JFrame(); // create buttons JButton btn1 = new JButton('NORTH'); JButton btn2 = new JButton('SOUTH'); JButton btn3 = new JButton('EAST'); JButton btn4 = new JButton('WEST'); JButton btn5 = new JButton('CENTER'); // creating an object of the BorderLayout class using // the parameterized constructor where the horizontal gap is 20 // and vertical gap is 15. The gap will be evident when buttons are placed // in the frame jframe.setLayout(new BorderLayout(20, 15)); jframe.add(btn1, BorderLayout.NORTH); jframe.add(btn2, BorderLayout.SOUTH); jframe.add(btn3, BorderLayout.EAST); jframe.add(btn4, BorderLayout.WEST); jframe.add(btn5, BorderLayout.CENTER); jframe.setSize(300,300); jframe.setVisible(true); } // main method public static void main(String argvs[]) { new BorderLayoutExample(); } }
Uitgang:
Java BorderLayout: zonder regio op te geven
De methode add() van de klasse JFrame kan zelfs werken als we de regio niet specificeren. In een dergelijk geval wordt alleen de laatst toegevoegde component in het frame weergegeven en worden alle eerder toegevoegde componenten verwijderd. Het nieuwste onderdeel bestrijkt het hele gebied. Het volgende voorbeeld laat hetzelfde zien.
Bestandsnaam: BorderLayoutWithoutRegionExample.java
// import statements import java.awt.*; import javax.swing.*; public class BorderLayoutWithoutRegionExample { JFrame jframe; // constructor BorderLayoutWithoutRegionExample() { jframe = new JFrame(); JButton btn1 = new JButton('NORTH'); JButton btn2 = new JButton('SOUTH'); JButton btn3 = new JButton('EAST'); JButton btn4 = new JButton('WEST'); JButton btn5 = new JButton('CENTER'); // horizontal gap is 7, and the vertical gap is 7 // Since region is not specified, the gaps are of no use jframe.setLayout(new BorderLayout(7, 7)); // each button covers the whole area // however, the btn5 is the latest button // that is added to the frame; therefore, btn5 // is shown jframe.add(btn1); jframe.add(btn2); jframe.add(btn3); jframe.add(btn4); jframe.add(btn5); jframe.setSize(300,300); jframe.setVisible(true); } // main method public static void main(String argvs[]) { new BorderLayoutWithoutRegionExample(); } }
Uitgang: