[JavaSwing] GridLayout的
正如你所知道的集装箱 (作为JFrame中, 的JPanel, ...) 用于存储的控制其, 然而,他们可能会或可能不会默认对象的安排是不是我们所期望的. 因此,我们需要利用这样做布局. 换句话说,布局帮助下,我们可以安排容器以合理的方式和美丽.
内容
使用网格布局创建
GridLayout的 是 布局 简单易用, 它把我们的大小相同的行和列的容器形式表.
我们使用GridLayout的布局时,我们喜欢的表, 比如布局 JButton的 在这样的电脑.

例如,使用GridLayout的
在这个应用程序,我们将创建 1 表 4 JButton的放置在 的JPanel 使用网格布局. 当你点击每个JButton的,你可以改变的水平距离, 沿着它们之间. 下面有 2 的JLabel 显示水平距离 (hgap指定), 纵 (vGap) 它们之间.
package nguyenvanquan7826.GridLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MyGridLayout extends JFrame implements ActionListener {
private JPanel mainPanel;
private GridLayout gridLayout;
private JLabel lbHGap;
private JLabel lbVGap;
final int dram = 3;
public MyGridLayout() {
createJFrame();
}
private void createJFrame() {
// create JFrame
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 400);
// add content to JFrame
mainPanel = createMainPanel();
add(mainPanel);
// display
setLocationRelativeTo(null);
setVisible(true);
}
private JPanel createMainPanel() {
// create JPanel with GridLayout
gridLayout = new GridLayout(3, 2, 5, 5);
JPanel panel = new JPanel(gridLayout);
// add four JButton to panel
panel.add(createJButton("+ vGap"));
panel.add(createJButton("- vGap"));
panel.add(createJButton("+ hGap"));
panel.add(createJButton("- hGap"));
// create and add vGap and hGap JLabel to panel
lbVGap = createJLabel("vGap = 5");
lbHGap = createJLabel("hGap = 5");
panel.add(lbVGap);
panel.add(lbHGap);
return panel;
}
// create JButton
private JButton createJButton(String buttonName) {
JButton btn = new JButton(buttonName);
btn.addActionListener(this);
return btn;
}
// create JLabel
private JLabel createJLabel(String title) {
JLabel lb = new JLabel(title);
lb.setHorizontalAlignment(JLabel.CENTER);
return lb;
}
// change vGap and hGap
private void changeGap(int vGap, int hGap) {
if (vGap >= 0 && hGap >= 0) {
gridLayout.setVgap(vGap);
gridLayout.setHgap(hGap);
lbVGap.setText("vGap = " + vGap);
lbHGap.setText("hGap = " + hGap);
gridLayout.layoutContainer(mainPanel);
}
}
@Override
public void actionPerformed(ActionEvent evt) {
String command = evt.getActionCommand();
if (command == "+ vGap") { // augment vGap
changeGap(gridLayout.getVgap() + dram, gridLayout.getHgap());
}
if (command == "- vGap") {// abatement vGap
changeGap(gridLayout.getVgap() - dram, gridLayout.getHgap());
}
if (command == "+ hGap") {// augment hGap
changeGap(gridLayout.getVgap(), gridLayout.getHgap() + dram);
}
if (command == "- hGap") {// abatement hGap
changeGap(gridLayout.getVgap(), gridLayout.getHgap() - dram);
}
}
public static void main(String[] args) {
new MyGridLayout();
}
}

构造函数方法网格布局
– GridLayout的(): 创建网格布局与 1 排, 1 职位
– GridLayout的(INT行, INT COLS): 创建GridLayou指定的行和列数
– GridLayout的(INT行, INT COLS, 参数hgap, INT vgap): 创建网格布局的货物, 列数, 的行和列之间的距离.
在这段代码中你指挥关注 gridLayout.layoutContainer(mainPanel中);, 该命令允许集装箱 (这是在mainPanel中) 使用它布局 (这里是网格布局).



亲爱Ë问计算机电子表格的如何的部分顶后用AK
使用布局的组合是他OK, 可能只是更容易使用网格布局.
Ë谢多, 他的网站上的经验教训已经帮助了很多在法E学习. Ë 1 被一个小的要求可以与类型为CardLayout LayoutManager的添加部, GroupLayout的和SpringLayout中不? 因为写很理解. 因此用电子谢NHE!!!
谢谢亲爱的. 我会尝试,但有点忙最近与工作时间不长在Java.
服务员, 我想问类支持网格布局它的总 2 PES伞, 认为 2 表格单元格只显示 1 这样的JButton?
试试这个GridBagLayout的NHE
Anh ơi cho em hỏi làm sao để xóa 1 gridlayout để tạo 1 gridlayout mới vậy a?
首席执行官: ban đầu em tạo Pplay.setLayout(新的网格布局(5, 5));
nhưng sau đó muốn xóa cái trước và tạo lại 1 Pplay.setLayout(新的网格布局(7, 7));
bạn cứ set cái mới là nó tự khắc mới. 🙂
cho e hỏi layoutContainer làm gì vậy vì bỏ nó vẫn chạy bình thường mà