[JavaSwing] GridLayoutの
あなたはすでにコンテナを知っているように (JFrameのような, JPanelの, ...) それにコントロールを格納するために使用, しかし彼らは、オブジェクトのデフォルトの配置は私の希望ではない持っているか持っていません. だから我々は、このレイアウトを達成するために使用する必要があります. つまりレイアウトのヘルプは、私たちは、論理的に、美しくコンテナコントロールの手配をすることができます.
コンテンツ
GridLayoutのを使用して作成
GridLayoutの ある レイアウト シンプルで使いやすいです, それは、同じサイズの行と列のテーブルに私たちのコンテナを分割しました.
私たちは、GridLayoutのを使用する場合、テーブルのような私たちのレイアウト, 例えばレイアウト JButtonの このようなコンピュータで.

使用例のGridLayoutの
このアプリケーションのために滞在、我々が作成されます。 1 のテーブル 4 JButtonのは中に置か JPanelの GridLayoutのを使用して. あなたは各の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
– GridLayoutの(): GridLayoutの作成と 1 行, 1 ポスト
– GridLayoutの(int型の行, int型COLS): 指定された行数と列数とGridLayouを作成します。
– GridLayoutの(int型の行, int型COLS, int型hgap, int型VGAP): 行数とのGridLayoutを作成します。, 列の数, 行と列の間の距離.
このコードでは、注意を命じます gridLayout.layoutContainer(mainPanel);, このコマンドは、コンテナを可能に (これはMainPanelであります) それを使用するレイアウト (ここでのGridLayoutのは、).
参照する: クラスGridLayoutの, GridLayoutのを使用



親愛なるeはAKでトップのポストにコンピュータのスプレッドシートのどの部分を尋ね
レイアウトの組み合わせを使用すると、彼と一緒にOKです, ちょうど使いやすいかもしれGridLayoutの.
eは非常に感謝します, 自分のサイト上での教訓は、プロセスのEラーニングで多くのことを助けました. E 1 小さな要件はCardLayoutのLayoutManagerとして型にセクションを追加することができています, GroupLayoutとSpringLayoutをではありません? 書き込みは非常に理解しやすいので、. だから、eはNHE感謝します!!!
ハニーありがとうございました. 私はJavaではない、長い仕事で最近試みるが、少し忙しいですよ.
ウェイター, em muốn hỏi lớp gridLayout nó có hỗ trợ gộp 2 ô lại đc ko, nghĩ là 2 ô trong bảng chỉ hiển thị 1 JButton chẳng hạn?
Cái này thử dùng GridBagLayout nhé
Anh ơi cho em hỏi làm sao để xóa 1 gridlayout để tạo 1 gridlayout mới vậy a?
最高経営責任者(CEO: ban đầu em tạo Pplay.setLayout(新しいGridLayoutの(5, 5));
nhưng sau đó muốn xóa cái trước và tạo lại 1 Pplay.setLayout(新しいGridLayoutの(7, 7));
bạn cứ set cái mới là nó tự khắc mới. 🙂
eは、それはまだ正常な実行したままlayoutContainerがそう尋ねました