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

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 方法退出应用程序。仅在应用程序中使用。 } }

 

          

 

你可能感兴趣的:(Java学习笔记)