• JAVA Layout




    /**
     * 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();
           
        }
    }

  • 相关阅读:
    一个误解: 单个服务器程序可承受最大连接数“理论”上是“65535”
    Memcached 命令简介
    MySQL性能测试
    WCF 面向服务的SOAP消息
    WCF SOAP消息剖析
    深入探析 socket
    C#设计模式(适配器模式)
    LoadRunner中的异常处理
    反射调用性能比较(附源码)
    避免 TCP/IP 端口耗尽
  • 原文地址:https://www.cnblogs.com/riskyer/p/3253587.html
Copyright © 2020-2023  润新知