- package com.yin2na.example;
- import java.awt.BorderLayout;
- import java.awt.FlowLayout;
- import java.awt.GridLayout;
- import javax.swing.JFrame;
- import javax.swing.JButton;
- import java.awt.event.WindowListener;
- import java.awt.event.WindowEvent;
- import java.awt.event.WindowAdapter;
- class HelloLayout
- {
- public static void main(String[] args)
- {
- HelloBorderLayout.setBorderLayout();
- }
- public static void showMe(JFrame jf)
- {
- jf.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何操作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该操作。
- jf.setSize(300,300);
- jf.setVisible(true);
- }
- }
- class HelloBorderLayout
- {
- public static JFrame jf = new JFrame("BorderLayout");
- public static void setBorderLayout()
- {
- jf.setLayout(new BorderLayout());//BorderLayout是Swing容器的默认布局管理器,它的含义是采用东南西北中5个方位来进行布局,可以分别往这些方位上放置组件。
- jf.add(new JButton("east"), BorderLayout.EAST);
- jf.add(new JButton("south"), BorderLayout.SOUTH);
- jf.add(new JButton("west"), BorderLayout.WEST);
- jf.add(new JButton("north"), BorderLayout.NORTH);
- jf.add(new JButton("center"), BorderLayout.CENTER);
- jf.addWindowListener(new WindowListener(){//匿名内部类 用于接收窗口事件的侦听器接口。旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 WindowAdapter(仅重写所需的方法)。然后使用窗口的 addWindowListener 方法将从该类所创建的侦听器对象向该 Window 注册。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将 WindowEvent 传递给该方法。
- public void windowClosing(WindowEvent e)
- {
- HelloBorderLayout.jf.dispose();
- HelloFlowLayout.setFlowLayout();
- }
- public void windowActivated(WindowEvent e)
- {};
- public void windowDeactivated(WindowEvent e)
- {};
- public void windowDeiconified(WindowEvent e)
- {};
- public void windowIconified(WindowEvent e)
- {};
- public void windowOpened(WindowEvent e)
- {};
- public void windowClosed(WindowEvent e)
- {};
- });
- HelloLayout.showMe(jf);
- }
- }
- class HelloFlowLayout
- {
- public static JFrame jf = new JFrame("FlowLayout");//FlowLayout布局器采用流线型布局方式,把组件从左到右依次地放置,如果摆放不下,则换到下一行继续放置。
- public static void setFlowLayout()
- {
- jf.setLayout(new FlowLayout());//设置此容器的布局管理器。
- for(int i = 0; i < 10; i++)
- {
- jf.add(new JButton(i+""));
- }
- //jf.addWindowListener(new WindowListener(){
- // public void windowClosing(WindowEvent e)
- // {
- // HelloFlowLayout.jf.dispose();//释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。
- // HelloGridLayout.setGridLayout();
- // };
- // public void windowActivated(WindowEvent e)
- // {};
- // public void windowDeactivated(WindowEvent e)
- // {};
- // public void windowDeiconified(WindowEvent e)
- // {};
- // public void windowIconified(WindowEvent e)
- // {};
- // public void windowOpened(WindowEvent e)
- // {};
- // public void windowClosed(WindowEvent e)
- // {};
- //});
- jf.addWindowListener(new WindowAdapter(){//Swing的适配器能够避免代码的冗余,为一些监听器接口的方法提供默认的空实现,这样就可以直接继承自适配器,不必把每一个接口方法都实现。
- public void windowClosing(WindowEvent e)
- {
- HelloFlowLayout.jf.dispose();//释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。
- HelloGridLayout.setGridLayout();
- };
- });
- HelloLayout.showMe(jf);
- }
- }
- class HelloGridLayout
- {
- public static void setGridLayout()
- {
- JFrame jf = new JFrame("GridLayout");//GridLayout布局管理器采用表格式的布局方式,它把容器等分为N*M个格子,然后把加入的组件依次旋转在格子中。
- jf.setLayout(new GridLayout(10, 10));
- for(int i = 0; i< 100; i++)
- {
- jf.add(new JButton(i+""));
- }
- HelloLayout.showMe(jf);
- jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。
- }
- }