import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;public class InternalFrameEventTest extends JApplet {
/**
 * 
 */
private static final long serialVersionUID = 1L;
public void init() {
Container c = getContentPane();
//JLayeredPane和JDesktopPane需要看一下
JLayeredPane desktop = new JDesktopPane();
desktop.setOpaque(false);
c.add(desktop, BorderLayout.CENTER);
desktop.add(createLayer("One"), JLayeredPane.POPUP_LAYER);
desktop.add(createLayer("Two"), JLayeredPane.DEFAULT_LAYER);
desktop.add(createLayer("Three"), JLayeredPane.PALETTE_LAYER);
}
public JInternalFrame createLayer(String label) {
return new SelfInternalFrame(label);
}
class SelfInternalFrame extends JInternalFrame {
/**
 * 
 */
private static final long serialVersionUID = 1L; public SelfInternalFrame(String s) {
getContentPane().add(new JLabel(s), BorderLayout.CENTER);
addInternalFrameListener(new InternalFrameListener(){
public void internalFrameActivated(InternalFrameEvent e) {
System.out.println("actived" + e.getSource());
}
public void internalFrameClosed(InternalFrameEvent e) {
System.out.println("closed" + e.getSource());
}
public void internalFrameClosing(InternalFrameEvent e) {
System.out.println("closing" + e.getSource());
}
public void internalFrameDeactivated(InternalFrameEvent e) {
System.out.println("deactived" + e.getSource());
}
public void internalFrameDeiconified(InternalFrameEvent e) {
System.out.println("deiconified" + e.getSource());
}
public void internalFrameIconified(InternalFrameEvent e) {
System.out.println("iconified" + e.getSource());
}
public void internalFrameOpened(InternalFrameEvent e) {
System.out.println("opened" + e.getSource());
}
});
setBounds(50, 50, 100, 100);
setResizable(true);
setClosable(true);
setMaximizable(true);
setIconifiable(true);
setTitle(s);
}
}
}这个例子是书上第14章,事件里面抄的,前面13章讲JInternalFrame也有这个例子,只不过没有监听。问题是我eclipse下面码字完了运行,结果applet出来了,但是一片空白,什么都没有。而且eclipse提示java.awt.event.*没有用到。
但是我检查了两遍,和电子书上一模一样,所以怀疑电子书出问题,但是又找不出问题,所以请教下。