现在的位置: 首页 > 综合 > 正文

JAVA Layout

2014年07月25日 ⁄ 综合 ⁄ 共 6187字 ⁄ 字号 评论关闭
/**
 * baidu :组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上?
 * 实际上在JFrame上可直接添加Jbutton
 * 
 * BorderLayout
FlowLayout
GridLayout
GridBagLayout
CardLayout
BoxLayout
* 
* GridBagLayout稍复杂,主要看BoxLayout、BorderLayout
 */
package layoutmanager;


import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


/**
 *
 * @author Albert Li
 */
public class LayoutManager {
      JFrame mJFrame = new JFrame();     
    
    
   public  void InitGridLayout(){            
        mJFrame.setTitle("GridLayout");
        mJFrame.setLayout(new GridLayout(3,3,5,5));        
        for(int i=1; i<10; i++){
           JButton mJButton = new JButton(String.valueOf(i));
           mJFrame.add(mJButton);          
        }
         mJFrame.setBounds(300, 300, 300, 300); 
        mJFrame.setVisible(true);
        mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
   
   public void InitFlowLayout(){
       mJFrame.setTitle("FlowLayout");
       mJFrame.setLayout(new FlowLayout(5, 10, 10));
       
        for(int i=1; i<10; i++){
           JButton mJButton = new JButton(String.valueOf(i));
           mJFrame.add(mJButton);          
        }                   
     
        mJFrame.setBounds(300, 300, 300, 300); 
        mJFrame.setVisible(true);
        mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
   }
   
   Panel pnlCommandArea = new Panel();
   Panel pnlDisplayArea = new Panel();
   CardLayout mCardLayout = new CardLayout();
    JButton mjButton = new JButton("Command");
   public void InitCardLayout(){
       mJFrame.setTitle("CardLayout");
       mJFrame.setLayout(new BorderLayout(10,10));
       
       
       pnlDisplayArea.setLayout(mCardLayout);
       
       
       Panel pnlFirst = new Panel();       
       Panel pnlSed = new Panel();
       Panel pnlThird = new Panel();      
      
       pnlFirst.add(new Label("first"));
       pnlSed.add(new Label("second"));
       pnlThird.add(new Label("third"));
       pnlFirst.add(new JButton("button 1"));
        pnlSed.add(new JButton("button 2"));
         pnlThird.add(new JButton("button 3"));
       
       pnlDisplayArea.add(pnlFirst,"Cardlayout_first");
       pnlDisplayArea.add(pnlSed,"Cardlayout_sed");
       pnlDisplayArea.add(pnlThird,"Cardlayout_Third");
       
       ((CardLayout)pnlDisplayArea.getLayout()).show(pnlDisplayArea,"CardLayout_first");
       
      
       mjButton.addActionListener(new ActionListener() {
           @Override
           public void actionPerformed(ActionEvent e) {
               //throw new UnsupportedOperationException("Not supported yet.");
            //  ProcessAction(e);
                mCardLayout.next(pnlDisplayArea);
              // ((CardLayout)pnlDisplayArea.getLayout()).show(pnlDisplayArea, "Cardlayout_sed");
           }
       });
       pnlCommandArea.add(mjButton);
       
        mJFrame.add(pnlCommandArea,BorderLayout.NORTH);
        mJFrame.add(pnlDisplayArea,BorderLayout.CENTER);
        
      
        
        mJFrame.setBounds(300, 300, 300, 300); 
        mJFrame.setVisible(true);
        mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
       
       
   }
   
   //将组件添加到Box,此时且不需要设置布局,由新建Box时设置水平还是垂直
   public void InitBoxLayout(){
       mJFrame.setTitle("BoxLayout");
       //不需要下面这句话,错误
       //mJFrame.setLayout(new BoxLayout(mJFrame,BoxLayout.X_AXIS ));
       
       Box mBox =Box.createHorizontalBox();
     
         for(int i=1; i<15; i++){
           JButton mJButton = new JButton(String.valueOf(i));
           mBox.add(mJButton);          
        } 
       
       mJFrame.add(mBox);
        mJFrame.setBounds(300, 300, 300, 300); 
        mJFrame.pack();
        mJFrame.setVisible(true);
        mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               
               }
   
   //将组件直接添加到Panel,需先设置panel 的布局(为BoxPanel , 垂直还是水平)
   //我坐在窗前,有时候还可以看到鸟飞过,面对不过空无一物的天空,底下是城市的边缘,很矮很矮的地方。
   public void boxLayout(){
       Panel mPanel = new Panel();
       BoxLayout mBoxLayout = new BoxLayout(mPanel, BoxLayout.Y_AXIS);
       mPanel.setLayout(mBoxLayout);
       
        for(int i=1; i<15; i++){
           JButton mJButton = new JButton(String.valueOf(i));
           mPanel.add(mJButton);          
        } 
      
        mJFrame.add(mPanel);
        mJFrame.setBounds(300, 300, 300, 300); 
        mJFrame.pack();
        mJFrame.setVisible(true);
        mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
       
   }
  public  void BoxTopPanel() { 
JPanel topPanel = new JPanel(); 
 String[] columnName = { "姓名", "性别", "单位", "参加项目", "备注" }; 
 String[][] rowData = { { "张三", "男", "计算机系", "100 米 ,200 米", "" }, 
 { "李四", "男", "化学系", "100 米,铅球", "" }, 
 { "李四", "男", "化学系", "100 米,铅球", "" }, 
 { "李四", "男", "化学系", "100 米,铅球", "" }, 
 { "李四", "男", "化学系", "100 米,铅球", "" }, 
 }; 
            // 创建表格
 JTable table = new JTable(new DefaultTableModel(rowData, columnName)); 
            // 创建包含表格的滚动窗格
 JScrollPane scrollPane = new JScrollPane(table);
 scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
            // 定义 topPanel 的布局为 BoxLayout,BoxLayout 为垂直排列
 topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.Y_AXIS)); 
            // 先加入一个不可见的 Strut,从而使 topPanel 对顶部留出一定的空间
 topPanel.add(Box.createVerticalStrut(10)); 
            // 加入包含表格的滚动窗格 
 topPanel.add(scrollPane); 
            // 再加入一个不可见的 Strut,从而使 topPanel 和 middlePanel 之间留出一定的空间
  topPanel.add(Box.createVerticalStrut(10)); 
  
  mJFrame.add(topPanel);
        mJFrame.setBounds(300, 300, 300, 150); 
        //mJFrame.pack();
        mJFrame.setVisible(true);
        mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
 } 
   
   
   
   public void InitGridBagLayout(){
       GridBagLayout mGridBagLayout = new GridBagLayout();
       mJFrame.setLayout(mGridBagLayout);
       
       GridBagConstraints mGridBagConstraints = new GridBagConstraints();
       
       mGridBagConstraints.fill = GridBagConstraints.BOTH;
       mGridBagConstraints.gridx = 0;
       mGridBagConstraints.gridy = 0;
       mGridBagConstraints.gridheight = 2;
       mGridBagConstraints.gridwidth = 1;
       mGridBagConstraints.anchor = GridBagConstraints.NORTH;
       mGridBagConstraints.weightx = 0;
       mGridBagConstraints.weighty = 0;
       
       JButton btn = new JButton("button 1");       
      mGridBagLayout.setConstraints(btn, mGridBagConstraints);
      mJFrame.add(btn);
      
      mGridBagConstraints.fill = GridBagConstraints.BOTH;
       mGridBagConstraints.gridx = 300;
       mGridBagConstraints.gridy = 300;
       mGridBagConstraints.gridheight = GridBagConstraints.REMAINDER;
       mGridBagConstraints.gridwidth = 10;
       mGridBagConstraints.anchor = GridBagConstraints.SOUTHEAST;
       mGridBagConstraints.weightx = 0;
       mGridBagConstraints.weighty = 0;
       
       btn = new JButton("button 2"); 
       mGridBagLayout.setConstraints(btn, mGridBagConstraints);
        mJFrame.add(btn);
      
       mJFrame.setBounds(300, 300, 300, 300); 
       // mJFrame.pack();
        mJFrame.setVisible(true);
        mJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
      
   }
   
    private void ProcessAction(ActionEvent e){
        if(((Button)e.getSource()).equals(mjButton)){              
                  mCardLayout.next(pnlDisplayArea);    
               }
   }


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       LayoutManager mLayoutManager = new LayoutManager();
      // mLayoutManager.InitGridLayout();
       //mLayoutManager.InitFlowLayout();
       //mLayoutManager.InitCardLayout();//BorderLayout
       //
      // mLayoutManager.InitBoxLayout();
       //mLayoutManager.InitGridBagLayout();
       
      // mLayoutManager.boxLayout();
       mLayoutManager.BoxTopPanel();
       
    }
} 

抱歉!评论已关闭.