您的位置:首页 > 编程语言 > Java开发

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

2011-03-19 10:42 405 查看
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 方法退出应用程序。仅在应用程序中使用。
}
}








内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: