JAVA Layout

来源:互联网 发布:八大山人 知乎 编辑:程序博客网 时间:2024/05/21 17:36
/** * baidu :组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上? * 实际上在JFrame上可直接添加Jbutton *  * BorderLayoutFlowLayoutGridLayoutGridBagLayoutCardLayoutBoxLayout* * 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();           }} 

原创粉丝点击