javax.swing.UIManager
static UIManager.LookAndFeelInfo[] getInstalledLookAndFeels();
获得一个用于描述已安装的观感实现的对象组
static setLookAndFeel(String className)
利用给定的观感,例如,javax.swing.plaf.metal.MetalLookAndFeel
java.swing.UIManager.LookAndFeelInfo
String getName();
返回观感的显示名称
String getClassName();
返回观感实现类的名称
适配器类
public interface WindowListener
extends
EventListener
用于接收窗口事件的侦听器接口。旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 WindowAdapter(仅重写所需的方法)。然后使用窗口的 addWindowListener 方法将从该类所创建的侦听器对象向该 Window 注册。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将 WindowEvent 传递给该方法。
public interface WindowListener
extends
EventListener
用于接收窗口事件的侦听器接口。旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 WindowAdapter(仅重写所需的方法)。然后使用窗口的 addWindowListener 方法将从该类所创建的侦听器对象向该 Window 注册。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将 WindowEvent 传递给该方法。
void windowActivated(WindowEvent e)
将 Window 设置为活动 Window 时调用。
void windowClosed(WindowEvent e)
因对窗口调用 dispose 而将其关闭时调用。
void windowClosing(WindowEvent e)
用户试图从窗口的系统菜单中关闭窗口时调用。
void windowDeactivated(WindowEvent e)
当 Window 不再是活动 Window 时调用。
void windowDeiconified(WindowEvent e)
窗口从最小化状态变为正常状态时调用。
void windowIconified(WindowEvent e)
窗口从正常状态变为最小化状态时调用。
void windowOpened(WindowEvent e)
窗口首次变为可见时调用。
当程序用户希望关闭一个窗口时,JFrame就是WindowEvent的事件源,如果希望捕获这个事件,就必须有一个合适的监听器对象,并将它添加到框架的窗口监听器列表中。
WindowListener listener=...;
frame.addWindowListener(listener);
窗口监听器必须是实现WindowListener接口的类的一个对象。在WindowListener接口中就包含7个方法。当发生窗口事件时,框架将调用这些方法相应7个不同的事件。从他们的名字就可以指导作用。唯一的例外是Windows下通常将iconified(图表化)称为minimized(最小化)。下面是完整的WindowListener接口:
public interface WindowListener
{
void windowOpened(WindowEvent e)
void windowClosing
void windowClosed
void windowIconified
void windowDeiconified
void windowActivated
void Deactivated
}
为了能够查看窗口是否被最大化,需要安装WinddowStateListener并覆盖windowStateChanged方法。
在java中,实现一个接口的任何类都必须实现接口中的所有方法,但是如果只对其中的一个方法感兴趣,也需要定义其他的所有方法:
class terminator implements WindowListener
{
public void windowClosing(WindowEvent e)
{
if( user agree)
System.exit(0);
}
public void ...
public void ...
...
...
}
书写6个没有实际作用的代码是乏味的,所以每一个含有多个方法的AWT监听器接口都有一个适配器(adapter)类。这个类实现了日接口中所有方法,但是每一个方法都没有做任何事情,这意味着适配器类自动满足了java实现相关监听器接口的技术需求。可以通过扩展适配器类来制定对某些事件的响应动作。而不必实现接口中的所有方法。
下面使用窗口适配器。
//首先定义一个WindowAdapter类的扩展类,其中包含继承的6个没有做任何事情的方法与一个覆盖的方法windowClosing:
class Terminator implements WindowAdapter
{
public void windowClosing(WindowEvent e)
{
if(usr agree)
System.exit(0);
}
}
//现在,可以将一个Terminator对象注册为事件监听器。
WindowListener listener=new Terminator();
frame.addWindowListener(listener);
只要框架产生了窗口事件,就会通过调用7个方法中的一个将时间传递给Listener对象。其中6个方法没有做任何事情;windowClosing方法调用System .exit(0);终止程序的执行
如果再扩展适配器类是将方法名拼错了,编译器不会捕获到这个错误。例如,如果在WindowAdapter类中定义一个windowIsClosing方法,就会得到一个包含8个方法的类,并且windowClosing没有做任何事情,可以使用@Override来避免这种事情
改进:
WindowListener listener=new Terminator();
frame.addWindowListener(listener);
//改进
frame.addWindowListener(new Terminator());
//改进
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
if(user agree)
System.exit(0);
}
});
java.awt.WindowListener
void windowOpened(WindowEvent e)
窗口打开后调用这个方法
void windowClosing(WindowEvent e)
java.awt.event.WindowStateListener
void windowStateChanged(WindowEvent e)
窗口最大化,图标化或者恢复为正常大小时调用这个方法
java.awt.event.WindowEvent
int getNewState()
int getOldState()
返回窗口状态改变事件中窗口的新旧状态,返回的整形数值是下列数值之一
Frame.NORMAL;
Frame.ICONIFID;
Frame.MAXIMIZED_HORIZl
...