乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      GroupLayout講解2

       jackeyqing 2019-02-16

       它將組件按層次分組,以決定它們在 Container 中的位置。GroupLayout 主要供生成器使用,但也可以手工編碼。分組由 Group 類的實(shí)例來完成。GroupLayout 支持兩種組。串行組 (sequential group) 按順序一個(gè)接一個(gè)地放置其子元素。并行組 (parallel group) 能夠以四種方式對(duì)齊其子元素。

      每個(gè)組可以包含任意數(shù)量的元素,其中元素有 Group、Component 或間隙 (gap)。間隙可被視為一個(gè)具有最小大小、首選大小和最大大小的不可見組件。此外,GroupLayout 還支持其值取自 LayoutStyle 的首選間隙。

      元素類似于一個(gè)彈簧。每個(gè)元素都有一個(gè)范圍,由最小大小、首選大小和最大大小指定。間隙的范圍由開發(fā)人員指定,或者由 LayoutStyle 確定。Component 的范圍通過 Component 的 getMinimumSize、getPreferredSize 和getMaximumSize 方法確定。此外,添加 Component 時(shí),可以指定使用一個(gè)特定范圍,而不使用該組件的范圍。Group 的范圍由組的類型確定。ParallelGroup 的范圍是其元素范圍的最大值。SequentialGroup 的范圍是其元素范圍的總和。

      GroupLayout 將每個(gè)軸 (axis) 單獨(dú)對(duì)待。也就是說,存在一個(gè)表示水平軸的組和一個(gè)表示垂直軸的組。水平組負(fù)責(zé)確定沿水平軸的最小大小、首選大小和最大大小,并設(shè)置所包含組件的 x 和寬度。垂直組負(fù)責(zé)確定沿垂直軸的最小大小、首選大小和最大大小,并設(shè)置所包含組件的 y 和高度。每個(gè) Component 都必須同時(shí)存在于水平組和垂直組中,否則,在布局過程中或者在請(qǐng)求最小大小、首選大小或最大大小時(shí),將拋出 IllegalStateException。

       

      Java SE 6 中包含一個(gè)新的 GroupLayout ,從GroupLayout的單詞意思來看,它是以Group(組)為單位來管理布局,也就是把多個(gè)組件(如:JLable、JButton)按區(qū)域劃分到不同的Group(組),再根據(jù)各個(gè)Group(組)相對(duì)于水平軸(Horizontal)和垂直軸(Vertical)的排列方式來管理。下面我們針對(duì)這樣一個(gè)界面看看它的用法:


      首先劃分組:

      1、按水平(Horizontal)方向劃分:

      hpg1  : JLabel 所在組(只有一個(gè)組件可以不用分組)
      hpg2a : 左邊兩個(gè)JCheckBox平行于水平軸(Horizontal)排列,構(gòu)成一個(gè)ParallelGroup
      hpg2b : 右邊兩個(gè)JChecKBox平行于水平軸(Horizontal)排列,構(gòu)成一個(gè)ParallelGroup
      hpg2H : hpg2a 和 hpg2b 兩個(gè)組沿著水平軸(Horizontal)順序排列,構(gòu)成一個(gè)SequentialGroup
      hpg2  :  JTextBox和組hpg2H 平行于水平軸(Horizontal)排列,構(gòu)成一個(gè)ParallelGroup
      hpg3  :  兩個(gè)JTextBox平行于水平軸(Horizontal)排列,構(gòu)成一個(gè)ParallelGroup

      另外JLabel 、hpg2、hpg3 沿著水平軸(Horizontal)順序排列,構(gòu)成一個(gè)SequentialGroup


      2、按垂直(Vertical)方向劃分:


      vpg1 : JLabel、JTextBox 、JButton(Find)平行于垂直軸(Vertical)排列,構(gòu)成一個(gè)ParallelGroup
      vpg2 : 上邊兩個(gè)JChecKBox、JButton(Cancel)平行于垂直軸(Vertical)排列,構(gòu)成一個(gè)ParallelGroup
      vpg3 : 下邊兩個(gè)JChecKBox平行于垂直軸(Vertical)排列,構(gòu)成一個(gè)ParallelGroup

      另外vpg1、vpg2、vpg3 三個(gè)組沿著垂直軸(Vertical)順序排列,構(gòu)成一個(gè)SequentialGroup

      3、編碼:水平和垂直兩個(gè)方向我們都必須設(shè)定,實(shí)現(xiàn)方法詳見程序。
      addComponent:向Group里添加組件,如JLabel、JTextBox
      addGroup    : 向Group里添加組

      /// GLayout.java
      package lee;

      import java.awt.*;
      import java.awt.event.*;
      import javax.swing.*;

      public class GLayout extends JFrame
      {
         public GLayout()
         {
          super("Find");
          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          //String laf = UIManager.getCrossPlatformLookAndFeelClassName();
          String laf = UIManager.getSystemLookAndFeelClassName();
          try {
               UIManager.setLookAndFeel(laf);
          } catch (UnsupportedLookAndFeelException exc) {
           System.err.println("Warning: UnsupportedLookAndFeel: " + laf);
          } catch (Exception exc) {
           System.err.println("Error loading " + laf + ": " + exc);
          }
          JLabel label1 = new JLabel("Find What:");
          JTextField textField1 = new JTextField();
          JCheckBox caseCheckBox = new JCheckBox("Match Case");
          JCheckBox wholeCheckBox = new JCheckBox("Whole Words");
          JCheckBox wrapCheckBox = new JCheckBox("Warp Around");
          JCheckBox backCheckBox = new JCheckBox("Search Backwards");
          JButton findButton = new JButton("Find");
          JButton cancelButton = new JButton("Cancel");
         
          Container c = getContentPane();
          GroupLayout layout = new GroupLayout(c);
          c.setLayout(layout);
          
          //自動(dòng)設(shè)定組件、組之間的間隙
          layout.setAutoCreateGaps(true);
          layout.setAutoCreateContainerGaps(true);

        //LEADING -- 左對(duì)齊    BASELINE -- 底部對(duì)齊  CENTER -- 中心對(duì)齊
          GroupLayout.ParallelGroup hpg2a = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
          hpg2a.addComponent(caseCheckBox);
          hpg2a.addComponent(wholeCheckBox);
           
          GroupLayout.ParallelGroup hpg2b = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
          hpg2b.addComponent(wrapCheckBox);
          hpg2b.addComponent(backCheckBox);

          GroupLayout.SequentialGroup hpg2H = layout.createSequentialGroup();
          hpg2H.addGroup(hpg2a).addGroup(hpg2b);
        
          GroupLayout.ParallelGroup hpg2 = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
          hpg2.addComponent(textField1);
          hpg2.addGroup(hpg2H);
        
          GroupLayout.ParallelGroup hpg3 = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
          hpg3.addComponent(findButton);
          hpg3.addComponent(cancelButton);

        //水平
          layout.setHorizontalGroup(layout.createSequentialGroup()
              .addComponent(label1).addGroup(hpg2).addGroup(hpg3));    
          
          //設(shè)定兩個(gè)Button在水平方向一樣寬
          layout.linkSize(SwingConstants.HORIZONTAL,new Component[] { findButton, cancelButton });
          //layout.linkSize(SwingConstants.HORIZONTAL,new Component[] { caseCheckBox, wholeCheckBox, wrapCheckBox, backCheckBox});

          GroupLayout.ParallelGroup vpg1 = layout.createParallelGroup(GroupLayout.Alignment.BASELINE);
          vpg1.addComponent(label1);
          vpg1.addComponent(textField1);
          vpg1.addComponent(findButton);
          
          GroupLayout.ParallelGroup vpg2 = layout.createParallelGroup(GroupLayout.Alignment.CENTER);
          vpg2.addComponent(caseCheckBox);
          vpg2.addComponent(wrapCheckBox);
          vpg2.addComponent(cancelButton);

          GroupLayout.ParallelGroup vpg3 = layout.createParallelGroup(GroupLayout.Alignment.BASELINE);
          vpg3.addComponent(wholeCheckBox);
          vpg3.addComponent(backCheckBox);

        //垂直
         layout.setVerticalGroup(layout.createSequentialGroup()
              .addGroup(vpg1).addGroup(vpg2).addGroup(vpg3));
          
          setLocation(200,200);
          pack();
          setVisible(true);
        }
        public static void main(String[] args)
      {
        new GLayout();
      }
      }

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多