[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à