swing
Gitterstruktur
Suche…
Wie funktioniert GridLayout?
Ein GridLayout
ist ein Layout-Manager, der Komponenten innerhalb eines Gitters mit gleichen Zellengrößen platziert. Sie können die Anzahl der Zeilen, Spalten, den horizontalen Abstand und den vertikalen Abstand mit den folgenden Methoden festlegen:
-
setRows(int rows)
-
setColumns(int columns)
-
setHgap(int hgap)
-
setVgap(int vgap)
oder Sie können sie mit den folgenden Konstruktoren setzen:
-
GridLayout(int rows, int columns)
-
GridLayout(int rows, int columns, int hgap, int vgap)
Wenn die Anzahl der Zeilen oder Spalten unbekannt ist, können Sie die entsprechende Variable auf 0
. Zum Beispiel:
new GridLayout(0, 3)
Dies hat zur Folge, dass das GridLayout
3 Spalten und so viele Zeilen wie nötig hat.
Das folgende Beispiel GridLayout
, wie ein GridLayout
Komponenten mit unterschiedlichen Werten für Zeilen, Spalten, horizontalen Abstand, vertikalen Abstand und Bildschirmgröße GridLayout
.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.WindowConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class GridLayoutExample {
private GridLayout gridLayout;
private JPanel gridPanel, contentPane;
private JSpinner rowsSpinner, columnsSpinner, hgapSpinner, vgapSpinner;
public void createAndShowGUI() {
gridLayout = new GridLayout(5, 5, 3, 3);
gridPanel = new JPanel(gridLayout);
final ChangeListener rowsColumnsListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
gridLayout.setRows((int) rowsSpinner.getValue());
gridLayout.setColumns((int) columnsSpinner.getValue());
fillGrid();
}
};
final ChangeListener gapListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
gridLayout.setHgap((int) hgapSpinner.getValue());
gridLayout.setVgap((int) vgapSpinner.getValue());
gridLayout.layoutContainer(gridPanel);
contentPane.revalidate();
contentPane.repaint();
}
};
rowsSpinner = new JSpinner(new SpinnerNumberModel(gridLayout.getRows(), 1, 10, 1));
rowsSpinner.addChangeListener(rowsColumnsListener);
columnsSpinner = new JSpinner(new SpinnerNumberModel(gridLayout.getColumns(), 1, 10, 1));
columnsSpinner.addChangeListener(rowsColumnsListener);
hgapSpinner = new JSpinner(new SpinnerNumberModel(gridLayout.getHgap(), 0, 50, 1));
hgapSpinner.addChangeListener(gapListener);
vgapSpinner = new JSpinner(new SpinnerNumberModel(gridLayout.getVgap(), 0, 50, 1));
vgapSpinner.addChangeListener(gapListener);
JPanel actionPanel = new JPanel();
actionPanel.add(new JLabel("Rows:"));
actionPanel.add(rowsSpinner);
actionPanel.add(Box.createHorizontalStrut(10));
actionPanel.add(new JLabel("Columns:"));
actionPanel.add(columnsSpinner);
actionPanel.add(Box.createHorizontalStrut(10));
actionPanel.add(new JLabel("Horizontal gap:"));
actionPanel.add(hgapSpinner);
actionPanel.add(Box.createHorizontalStrut(10));
actionPanel.add(new JLabel("Vertical gap:"));
actionPanel.add(vgapSpinner);
contentPane = new JPanel(new BorderLayout(0, 10));
contentPane.add(gridPanel);
contentPane.add(actionPanel, BorderLayout.SOUTH);
fillGrid();
JFrame frame = new JFrame("GridLayout Example");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setContentPane(contentPane);
frame.setSize(640, 480);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private void fillGrid() {
gridPanel.removeAll();
for (int row = 0; row < gridLayout.getRows(); row++) {
for (int col = 0; col < gridLayout.getColumns(); col++) {
JLabel label = new JLabel("Row: " + row + " Column: " + col);
label.setHorizontalAlignment(JLabel.CENTER);
label.setBorder(BorderFactory.createLineBorder(Color.GRAY));
gridPanel.add(label);
}
}
contentPane.revalidate();
contentPane.repaint();
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new GridLayoutExample().createAndShowGUI();
}
});
}
}
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow