Java图形用户界面布局控制Layout练习

  1. package com.yin2na.example;  
  2.   
  3. import java.awt.BorderLayout;  
  4. import java.awt.FlowLayout;  
  5. import java.awt.GridLayout;  
  6. import javax.swing.JFrame;  
  7. import javax.swing.JButton;  
  8. import java.awt.event.WindowListener;  
  9. import java.awt.event.WindowEvent;  
  10. import java.awt.event.WindowAdapter;  
  11.   
  12. class HelloLayout   
  13. {  
  14.     public static void main(String[] args)   
  15.     {  
  16.         HelloBorderLayout.setBorderLayout();  
  17.     }  
  18.   
  19.   
  20.     public static void showMe(JFrame jf)  
  21.     {  
  22.         jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。   
  23.         jf.setSize(300,300);  
  24.         jf.setVisible(true);  
  25.     }  
  26. }  
  27.   
  28. class HelloBorderLayout  
  29. {  
  30.     public static JFrame jf = new JFrame("BorderLayout");  
  31.     public static void setBorderLayout()  
  32.     {  
  33.         jf.setLayout(new BorderLayout());//BorderLayout是Swing容器的默认布局管理器,它的含义是采用东南西北中5个方位来进行布局,可以分别往这些方位上放置组件。  
  34.         jf.add(new JButton("east"), BorderLayout.EAST);  
  35.         jf.add(new JButton("south"), BorderLayout.SOUTH);  
  36.         jf.add(new JButton("west"), BorderLayout.WEST);  
  37.         jf.add(new JButton("north"), BorderLayout.NORTH);  
  38.         jf.add(new JButton("center"), BorderLayout.CENTER);  
  39.         jf.addWindowListener(new WindowListener(){//匿名内部类  用于接收窗口事件的侦听器接口。旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 WindowAdapter(仅重写所需的方法)。然后使用窗口的 addWindowListener 方法将从该类所创建的侦听器对象向该 Window 注册。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将 WindowEvent 传递给该方法。   
  40.             public void windowClosing(WindowEvent e)  
  41.             {  
  42.                 HelloBorderLayout.jf.dispose();  
  43.                 HelloFlowLayout.setFlowLayout();  
  44.             }  
  45.   
  46.             public void windowActivated(WindowEvent e)  
  47.             {};  
  48.   
  49.             public void windowDeactivated(WindowEvent e)  
  50.             {};  
  51.   
  52.             public void windowDeiconified(WindowEvent e)  
  53.             {};  
  54.   
  55.             public void windowIconified(WindowEvent e)  
  56.             {};  
  57.   
  58.             public void windowOpened(WindowEvent e)  
  59.             {};  
  60.   
  61.             public void windowClosed(WindowEvent e)  
  62.             {};  
  63.         });  
  64.         HelloLayout.showMe(jf);  
  65.     }  
  66. }  
  67.   
  68. class HelloFlowLayout  
  69. {  
  70.     public static JFrame jf = new JFrame("FlowLayout");//FlowLayout布局器采用流线型布局方式,把组件从左到右依次地放置,如果摆放不下,则换到下一行继续放置。  
  71.     public static void setFlowLayout()  
  72.     {  
  73.         jf.setLayout(new FlowLayout());//设置此容器的布局管理器。  
  74.         for(int i = 0; i < 10; i++)  
  75.         {  
  76.             jf.add(new JButton(i+""));  
  77.         }  
  78.         //jf.addWindowListener(new WindowListener(){  
  79.         //  public void windowClosing(WindowEvent e)  
  80.         //  {  
  81.         //      HelloFlowLayout.jf.dispose();//释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。   
  82.         //      HelloGridLayout.setGridLayout();  
  83.         //  };  
  84.   
  85.         //  public void windowActivated(WindowEvent e)  
  86.         //  {};  
  87.   
  88.         //  public void windowDeactivated(WindowEvent e)  
  89.         //  {};  
  90.   
  91.         //  public void windowDeiconified(WindowEvent e)  
  92.         //  {};  
  93.   
  94.         //  public void windowIconified(WindowEvent e)  
  95.         //  {};  
  96.   
  97.         //  public void windowOpened(WindowEvent e)  
  98.         //  {};  
  99.   
  100.         //  public void windowClosed(WindowEvent e)  
  101.         //  {};  
  102.         //});  
  103.         jf.addWindowListener(new WindowAdapter(){//Swing的适配器能够避免代码的冗余,为一些监听器接口的方法提供默认的空实现,这样就可以直接继承自适配器,不必把每一个接口方法都实现。  
  104.             public void windowClosing(WindowEvent e)  
  105.             {  
  106.                 HelloFlowLayout.jf.dispose();//释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。   
  107.                 HelloGridLayout.setGridLayout();  
  108.             };  
  109.         });  
  110.         HelloLayout.showMe(jf);  
  111.     }  
  112. }  
  113.   
  114. class HelloGridLayout  
  115. {  
  116.     public static void setGridLayout()  
  117.     {  
  118.         JFrame jf = new JFrame("GridLayout");//GridLayout布局管理器采用表格式的布局方式,它把容器等分为N*M个格子,然后把加入的组件依次旋转在格子中。  
  119.         jf.setLayout(new GridLayout(1010));  
  120.         for(int i = 0; i< 100; i++)  
  121.         {  
  122.             jf.add(new JButton(i+""));  
  123.         }  
  124.         HelloLayout.showMe(jf);  
  125.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。   
  126.     }  
  127. }  

 

           

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值