内部窗体 解决多窗体的显示和隐藏 超级妙!!!!!
下面是一个例子:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
class InterFrame extends JInternalFrame
{
JTextArea text;
InterFrame(String title)
{
super(title,true,true,true,true);
text=new JTextArea();
Container con=this.getContentPane();
con.add(new JScrollPane(text), BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.addInternalFrameListener(new InternalFrameAdapter ()
{
public void internalFrameActivated(InternalFrameEvent e)
{
setLayer(JDesktopPane.DRAG_LAYER);
}
public void internalFrameDeactivated(InternalFrameEvent e)
{
setLayer(JDesktopPane.DEFAULT_LAYER);
}
}
);
}
public JTextArea getJTextArea()
{
return text;
}
}
public class MDI extends JFrame implements ActionListener
{
JDesktopPane desk;
JMenuBar menubar;
JMenu menu;
JMenuItem itemNew,itemCopy,itemCut,itemPaste;
Container con;
MDI()
{
this.setSize(360, 360);
this.setVisible(true);
con=this.getContentPane();
desk=new JDesktopPane();
desk.setDesktopManager(new DefaultDesktopManager());
con.add(desk,BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
menubar=new JMenuBar();
menu=new JMenu("编辑");
itemNew=new JMenuItem("新建");
itemCopy=new JMenuItem("复制");
itemCut=new JMenuItem("剪切");
itemPaste=new JMenuItem("粘贴");
itemNew.addActionListener(this);
itemCopy.addActionListener(this);
itemCut.addActionListener(this);
itemPaste.addActionListener(this);
menu.add(itemNew);
menu.add(itemCopy);
menu.add(itemCut);
menu.add(itemPaste);
menubar.add(menu);
this.setJMenuBar(menubar);
this.validate();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==itemNew)
{
JInternalFrame a[]=desk.getAllFrames();
for(int i=0;i<a.length;i++)
{
desk.setLayer(a[i],JLayeredPane.DEFAULT_LAYER);
}
InterFrame newInternal=new InterFrame("无标题");
newInternal.setBounds(10, 10, 300, 300);
newInternal.setVisible(true);
desk.add(newInternal);
con.add(desk,BorderLayout.CENTER);
desk.setLayer(newInternal, JLayeredPane.DRAG_LAYER);
desk.validate();
con.validate();
this.validate();
}
if(e.getSource()==itemCopy)
{
InterFrame inter=(InterFrame)desk.getSelectedFrame();
JTextArea text=inter.getJTextArea();
text.copy();
}
if(e.getSource()==itemCut)
{
InterFrame inter=(InterFrame)desk.getSelectedFrame();
JTextArea text=inter.getJTextArea();
text.cut();
}
if(e.getSource()==itemPaste)
{
InterFrame inter=(InterFrame)desk.getSelectedFrame();
JTextArea text=inter.getJTextArea();
text.paste();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new MDI();
}
}