/**

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

       

    }

}

JAVA Layout的更多相关文章

  1. java layout 表格项增加、删除、修改

    实现的内容为:点击表格某项,再点击删除钮,可实现删除点击表格某项,再点击编辑按钮,可实现内容改变点击添加按钮,可实现向表格中添加内容 总结:总的来说中间遇到了很多困难,但是都一步步的解决了. pack ...

  2. Java语法笔记

    目录 知识点 不支持 恶心事 与C#的区别 组件 学习资料 母版页 知识点 类 静态方法,即可以在类上被调用,也可以在实例对象上被调用. Java类 先执行静态构造函数,再执行静态方法或静态字段,所以 ...

  3. Google Map API v2 步步为营(一) ----- 初见地图

    官方文档:https://developers.google.com/maps/documentation/android/start?hl=zh-CN 先谷歌后百度.使用google的api基本上按 ...

  4. Android Developers:两个视图渐变

    淡入淡出动画(也被称为渐隐)逐渐淡出一个UI组件,同时淡入另一个.这个动画在你想在你的应用程序中切换内容或者是视图的情况下非常有用.淡入淡出非常微妙并短,但支持从一个屏幕到下一个屏幕流畅的过渡.当你不 ...

  5. 【Android Developers Training】 73. 布局变化的动画

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  6. 【Android Developers Training】 72. 缩放一个视图

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  7. 【Android Developers Training】 70. 使用ViewPager实现屏幕滑动

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  8. 【Android Developers Training】 69. 视图切换的淡入淡出效果

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  9. Swing-GridBagLayout用法-入门

    注:本文内容转自:Java Layout总结-GridBagLayout.内容根据笔者理解稍有整理. GridBagLayout布局管理器:这就是最复杂的一个布局管理器了,网格包布局.在此布局中,组件 ...

随机推荐

  1. 关于const限定符

    1.  指向非常量数据的非常量指针 具有最高的数据访问极限 .不包含const关键字. 2. 指向常量数据的非常量指针 指针可以被改写,使其指向相应类型的任何数据项, 但是它所指向的数据项的值是不能被 ...

  2. CSS自学笔记(11):CSS3背景和边框

    CSS3 背景 在CSS3中新增了多个关于背景的属性,可以让我们对背景有了更多更好的操作,减少用第三方工具对背景图片进行修改美化. CSS3中主要是通过定义backgrounp中的各个属性来控制背景( ...

  3. UVA1292-----Strategic game-----树形DP解决树上的最小点覆盖问题

    本文出自:http://blog.csdn.net/dr5459 题目地址: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&a ...

  4. Memcached 使用与简单监测

    Introduce Memcached作为一个高并发内存Cached系统被很多大公司使用,最近也一直在用Memcached做项目也积累了一些相关经验. 本篇博文主要记录Memcached的一些基本使用 ...

  5. IIS的Connection由改为close改为Keep-Alive

    参考地址:http://jingyan.baidu.com/article/60ccbceb0c884864cab19784.html 官方:http://technet.microsoft.com/ ...

  6. 用sql语句按周、按月、按季、按年统

    原文地址:http://hi.baidu.com/%BD%F0%D3%F1kl_y/blog/item/1c368ffba9388476024f5645.html --按mySql语法统计按周,月,季 ...

  7. LeetCode: Surrounded Regions [130]

    [题目] Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A region is cap ...

  8. 图片裁剪:CropZoom插件

    上传个人头像的功能:用户在上传自己的照片后,由于照片尺寸不符合网站的要求,要求用户对照片进行裁剪,最终根据用户裁剪的尺寸生成头像. 用户可以对上传的图片进行自由缩放.裁剪,使之符合彩信图片的大小. C ...

  9. 切换tab,并且动态添加标签

    <script type="text/javascript"> /*处理ie7.ie8不兼容getElementsByClassName*/ if(!document. ...

  10. html系列教程--描述

    什么是 HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (ma ...