Java Swing GroupLayout

2018-01-09 19:23 更新

Java Swing教程 - Java Swing GroupLayout


GroupLayout在javax.swing包中。

GroupLayout使用組的概念。 一個組由元素組成。 組的元素可以是組件,間隙或另一組。

間隙是兩個組件之間的不可見區(qū)域。

有兩種類型的組:

  • Sequential group
  • Parallel group

當組中的元素被依次串聯(lián)放置時,它被稱為順序組。

當組中的元素并行放置時,它被稱為并行組。

GroupLayout類包含三個內(nèi)部類:Group,SequentialGroup和ParallelGroup。

Group是一個抽象類,其他兩個類繼承自Group類。

我們可以使用GroupLayout類的工廠方法來創(chuàng)建它們的對象。

我們可以使用GroupLayout類的工廠方法來創(chuàng)建它們的對象。...

以下代碼演示了如何使用GroupLayout在JFrame中并排顯示兩個按鈕。

import java.awt.Container;
//  w  w w .  ja  v  a  2s.  c o  m
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("GroupLayout");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = frame.getContentPane();

    GroupLayout groupLayout = new GroupLayout(contentPane);

    contentPane.setLayout(groupLayout);

    JLabel label = new JLabel("Label");
    JButton b2 = new JButton("Second Button");
    
    groupLayout.setHorizontalGroup(groupLayout.createSequentialGroup()
        .addComponent(label).addComponent(b2));

    groupLayout.setVerticalGroup(groupLayout
        .createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(label)
        .addComponent(b2));

    frame.pack();
    frame.setVisible(true);
  }
}


間隙

以下代碼演示了如何使用GroupLayout在JFrame中并排顯示兩個按鈕。...

import java.awt.Container;
//w  ww .j a  v a  2 s.c o m
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("GroupLayout");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = frame.getContentPane();

    GroupLayout groupLayout = new GroupLayout(contentPane);

    contentPane.setLayout(groupLayout);

    JLabel label = new JLabel("Label");
    JButton b2 = new JButton("Second Button");
    
    groupLayout.setHorizontalGroup(groupLayout.createSequentialGroup()
        .addComponent(label).addGap(5, 10,   50).addComponent(b2));

    groupLayout.setVerticalGroup(groupLayout
        .createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(label)
        .addComponent(b2));

    frame.pack();
    frame.setVisible(true);
  }
}


例子

以下代碼在b1和b2之間添加了RELATED首選間隙:

import java.awt.Container;
//w w w .java  2s. c  om
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.LayoutStyle;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("GroupLayout");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = frame.getContentPane();

    GroupLayout groupLayout = new GroupLayout(contentPane);

    contentPane.setLayout(groupLayout);

    JLabel label = new JLabel("Label");
    JButton b2 = new JButton("Second Button");
    
    groupLayout.setHorizontalGroup(groupLayout.createSequentialGroup()
        .addComponent(label).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(b2));

    groupLayout.setVerticalGroup(groupLayout
        .createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(label)
        .addComponent(b2));

    frame.pack();
    frame.setVisible(true);
  }
}

實施例2

import static javax.swing.GroupLayout.Alignment.BASELINE;
import static javax.swing.GroupLayout.Alignment.LEADING;
import static javax.swing.GroupLayout.Alignment.TRAILING;
// ww  w .  j av a  2 s . c  o m
import java.awt.Container;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("GroupLayout");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container contentPane = frame.getContentPane();

    GroupLayout groupLayout =
     new GroupLayout(contentPane); groupLayout.setAutoCreateGaps(true);
     groupLayout.setAutoCreateContainerGaps(true);
     contentPane.setLayout(groupLayout);

    JButton b1 = new JButton("Button 1");
    JButton b2 = new JButton("Button Second");
    JButton b3 = new JButton("3");
    JButton b4 = new JButton("4");

    groupLayout.setHorizontalGroup(groupLayout
        .createSequentialGroup()
        .addGroup(
            groupLayout.createParallelGroup(LEADING).addComponent(b1)
                .addComponent(b3))
        .addGroup(
            groupLayout.createParallelGroup(TRAILING).addComponent(b2)
                .addComponent(b4)));

    groupLayout.setVerticalGroup(groupLayout
        .createSequentialGroup()
        .addGroup(
            groupLayout.createParallelGroup(BASELINE).addComponent(b1)
                .addComponent(b2))
        .addGroup(
            groupLayout.createParallelGroup(BASELINE).addComponent(b3)
                .addComponent(b4)));

    frame.pack();
    frame.setVisible(true);
  }
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號