首页 > 代码库 > Java布局方式

Java布局方式

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992371.html

Java为我们提供了几个常用的布局管理器类,例如:FlowLayout、BorderLayout、GridLayout、GridBagLayout等。

java.awt FlowLayout 将组件按从左到右而后从上到下的顺序依次排列,一行不能放完则折到下一行继续放置 
java.awt GridLayout 形似一个无框线的表格,每个单元格中放一个组件 
java.awt BorderLayout 将组件按东、南、西、北、中五个区域放置,每个方向最多只能放置一个组件 
java.awt GridBagLayout 非常灵活,可指定组件放置的具体位置及占用单元格数目

 

[java] view plain copy
 
  1. import java.awt.BorderLayout;  
  2. import java.awt.Color;  
  3. import java.awt.Container;  
  4. import java.awt.FlowLayout;  
  5. import java.awt.GridLayout;  
  6.   
  7. import javax.swing.JButton;  
  8. import javax.swing.JFrame;  
  9. import javax.swing.JPanel;  
  10. import javax.swing.JTextField;  
  11.   
  12. public class CalcUI extends JFrame  
  13. {  
  14.     JPanel p1 = new JPanel(new FlowLayout()); //默认组件从居中开始  
  15.     JButton backButton = new JButton("back");  
  16.     JButton clearButton = new JButton("clear");  
  17.       
  18.     JPanel p2 = new JPanel(new GridLayout(2, 1)); //放置2行,每行1个组件  
  19.     JTextField displayField = new JTextField();  
  20.       
  21.     JPanel p3 = new JPanel(new GridLayout(4, 5)); //放置4行,每行5个组件  
  22.     String buttonStr = "789/A456*B123-C0.D+=";  
  23.       
  24.   
  25.     private void addButton(Container c, String s)  
  26.     {  
  27.         JButton b = new JButton(s);  
  28.         if(s.equals("A"))  
  29.         {  
  30.             b.setText("sqrt");  
  31.         }  
  32.         else if(s.equals("B"))  
  33.         {  
  34.             b.setText("1/x");  
  35.         }  
  36.         else if(s.equals("C"))  
  37.         {  
  38.             b.setText("%");  
  39.         }  
  40.         else if(s.equals("D"))  
  41.         {  
  42.             b.setText("+/-");  
  43.         }  
  44.           
  45.         b.setForeground(Color.BLUE);  
  46.         c.add(b);  
  47. //      b.addActionListener(this);  
  48.     }  
  49.       
  50.     public CalcUI()  
  51.     {  
  52.         p1.add(backButton);  
  53.         p1.add(clearButton);  
  54.           
  55.         p2.add(displayField);  
  56.         p2.add(p1);  
  57.           
  58.         for(int i = 0; i < buttonStr.length(); i++)  
  59.             this.addButton(p3, buttonStr.substring(i, i + 1));  
  60.           
  61.         setLayout(new BorderLayout());  
  62.         add(p2, "North");  
  63.         add(p3, "Center");  
  64.           
  65.         setSize(600, 600);  
  66.         setVisible(true);  
  67.     }  
  68.       
  69.     public static void main(String[] args)  
  70.     {  
  71.         new CalcUI();  
  72.     }  
  73.   
  74. }  

 

[java] view plain copy
 
  1. import java.awt.Color;  
  2. import java.awt.Component;  
  3. import java.awt.Font;  
  4. import java.awt.GridBagConstraints;  
  5. import java.awt.GridBagLayout;  
  6.   
  7. import javax.swing.JFrame;  
  8. import javax.swing.JLabel;  
  9. import javax.swing.JScrollPane;  
  10. import javax.swing.JTextArea;  
  11. import javax.swing.JTextField;  
  12.   
  13.   
  14. public class GridBagConstraintsTest extends JFrame  
  15. {  
  16.     private JLabel fromLabel = new JLabel("发送者");  
  17.     private JTextField fromField = new JTextField(10);  
  18.       
  19.     private JLabel receiveLabel = new JLabel("接收者");  
  20.     private JTextField receiveField = new JTextField(10);  
  21.       
  22.     private JLabel ccLabel = new JLabel("抄送人");  
  23.     private JTextField ccField = new JTextField(10);  
  24.       
  25.     private JLabel subjectLabel = new JLabel("主题");  
  26.     private JTextField subjectField = new JTextField(10);  
  27.       
  28.     private JTextArea accessoryArea = new JTextArea();  
  29.     private JScrollPane accessoryScroll = new JScrollPane();  
  30.     private JTextArea mailArea = new JTextArea();  
  31.     private JScrollPane scroll = new JScrollPane();  
  32.       
  33.     private JLabel accessoryLabel = new JLabel("附件");  
  34.       
  35.     private GridBagConstraints c = new GridBagConstraints();  
  36.     private GridBagLayout gridbag = new GridBagLayout();  
  37.       
  38.     private void add(Component c, GridBagConstraints gbc, GridBagLayout gridbag, int x, int y, int w, int h)  
  39.     {  
  40.         gbc.gridx = x;  
  41.         gbc.gridy = y;  
  42.         gbc.gridheight = h;  
  43.         gbc.gridwidth = w;  
  44.         gridbag.setConstraints(c, gbc);  
  45.         add(c);  
  46.     }  
  47.       
  48.     public GridBagConstraintsTest()  
  49.     {  
  50.         setSize(600, 600);  
  51.         setVisible(true);  
  52.         setLayout(gridbag);  
  53.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  54.           
  55.         c.fill = GridBagConstraints.HORIZONTAL;  
  56.         c.weightx = 0;  
  57.         c.weighty = 0;  
  58.   
  59.           
  60.         fromLabel.setForeground(Color.BLUE);  
  61.         fromLabel.setFont(new Font("Alias", Font.BOLD, 16));  
  62.         add(fromLabel, c, gridbag, 0, 1, 1, 1);  
  63.           
  64.         receiveLabel.setForeground(Color.blue);  
  65.         receiveLabel.setFont(new Font("Alias", Font.BOLD, 16));  
  66.         add(receiveLabel, c, gridbag, 0, 2, 1, 1); //指定收信人标签位置及大小  
  67.           
  68.         ccLabel.setForeground(Color.blue);  
  69.         ccLabel.setFont(new Font("Alias", Font.BOLD, 16));  
  70.         add(ccLabel, c, gridbag, 0, 3, 1, 1); //指定抄送人标签位置及大小  
  71.           
  72.         subjectLabel.setForeground(Color.blue);  
  73.         subjectLabel.setFont(new Font("Alias", Font.BOLD, 16));  
  74.         add(subjectLabel, c, gridbag, 0, 4, 1, 1); //指定主题标签位置及大小  
  75.           
  76.         accessoryLabel.setForeground(Color.blue);  
  77.         accessoryLabel.setFont(new Font("Alias", Font.BOLD, 16));  
  78.         add(accessoryLabel, c, gridbag, 0, 5, 1, 1); //指定附件标签位置及大小  
  79.           
  80.         c.weightx = 100; //行自适应缩放  
  81.         c.weighty = 0;//列高不变  
  82.           
  83.         fromField.setText("admin@watermelon.com");  
  84.         add(fromField, c, gridbag, 1, 1, 1, 1); //指定发信人文本域(JTextField)位置及大小  
  85.         add(receiveField, c, gridbag, 1, 2, 1, 1); //指定收信人文本域(JTextField)位置及大小  
  86.         add(ccField, c, gridbag, 1, 3, 1, 1); //指定抄送人文本域(JTextField)位置及大小  
  87.         add(subjectField, c, gridbag, 1, 4, 1, 1); //指定主题文本域(JTextField)位置及大小  
  88. //      accessoryArea.setEditable(false);    
  89.           
  90.         //设置不显示水平滚动条(该JTextArea置于JScrollPane中)  
  91. //      accessoryScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);  
  92.         add(accessoryScroll, c, gridbag, 1, 5, 1, 1); //指定附件文本区(JTextArea)位置及大小  
  93.            
  94.         c.fill = GridBagConstraints.BOTH;//采用全填充方式布局  
  95.         c.weightx = 100;//行自适应缩放  
  96.         c.weighty = 100;//列自适应缩放  
  97.         mailArea.setBackground(Color.blue);  
  98.         mailArea.setForeground(Color.yellow);  
  99.         mailArea.setTabSize(4);  
  100.           
  101.         //指定信件主体区(JTextArea)的位置及大小。(该JTextArea也置于JScrollPane中)  
  102.         add(scroll, c, gridbag, 0, 6, 2, 1);   
  103.           
  104.     }  
  105.       
  106.     public static void main(String[] args)  
  107.     {  
  108.         new GridBagConstraintsTest();  
  109.     }  
  110. }  

 

 

 

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992371.html

Java布局方式