JInternalFrame怎么用 ? 下面程序是照着书打的 可是无法正常显示结果

AlwayAsk 2003-10-20 07:18:22
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class TJLayeredPane extends JFrame implements ActionListener
{
JButton button;
JLayeredPane layeredPane;
static int frameCount=0;
static final int xOffSet=25;
static final int yOffSet=25;
int numFrames=1;
Integer[] layerConstants={JLayeredPane.DEFAULT_LAYER,JLayeredPane.PALETTE_LAYER,JLayeredPane.MODAL_LAYER,
JLayeredPane.POPUP_LAYER,JLayeredPane.DRAG_LAYER};
String [] layerNames={"Default layer","Palette Layer",
"Modal layer","Popup Layer","Drag Layer"};
Vector framesVector=new Vector();
public TJLayeredPane()
{
super("TJLayeredPane");
JPanel panel=new JPanel(new GridLayout(3,3));
panel.setBorder(BorderFactory.createTitledBorder("点击创建内部Frame"));
for(int i=0;i<layerNames.length+1;i++)
{
if(i<layerNames.length)
{
button=new JButton("Add to "+layerNames[i]);
button.setActionCommand(layerNames[i]);
}
else
{
button=new JButton("Clear the Frames");
button.setActionCommand("Clear");
button.setForeground(Color.red);
}
button.addActionListener(this);
panel.add(button);
}
getContentPane().add(panel,BorderLayout.SOUTH);
layeredPane=getLayeredPane();
addWindowListener(new WindowEventHandler());
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setSize(400,400);
show();
}
public void actionPerformed(ActionEvent e)
{
JButton tempButton=(JButton)e.getSource();
if(tempButton.getActionCommand()==layerNames[0])
{
addInternalFrame(0);
}
else if(tempButton.getActionCommand()==layerNames[1])
{
addInternalFrame(1);
}
else if(tempButton.getActionCommand()==layerNames[2])
{
addInternalFrame(2);
}
else if(tempButton.getActionCommand()==layerNames[3])
{
addInternalFrame(3);
}
else if(tempButton.getActionCommand()==layerNames[4])
{
addInternalFrame(4);
}
else if(tempButton.getActionCommand()=="Clear")
{
for(Enumeration enum=framesVector.elements();enum.hasMoreElements();)
{
((JInternalFrame)enum.nextElement()).dispose();
}
frameCount=0;
}
}
public void addInternalFrame(int index)
{
JInternalFrame iFrame=new JInternalFrame("In "+layerNames[index],
true,
true,
true,
true);
framesVector.addElement(iFrame);
iFrame.setLocation(xOffSet*(frameCount),yOffSet*(frameCount++));
iFrame.setSize(200,150);
iFrame.setDefaultCloseOperation(iFrame.DO_NOTHING_ON_CLOSE);
iFrame.setFrameIcon(new ImageIcon("girl.gif"));
layeredPane.add(iFrame,layerConstants[index]);
JOptionPane.showMessageDialog(null,"In "+layerNames[index]);
}
class WindowEventHandler extends WindowAdapter
{
public void windowClosing(WindowEvent evt)
{
System.exit(0);
}
}
public static void main(String[] args)
{
TJLayeredPane frame=new TJLayeredPane();
}
}
正常的话应该点击按钮出现一个新的窗口 可是什么都没有
请高人救命
...全文
96 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlwayAsk 2003-10-20
  • 打赏
  • 举报
回复
果然 谢谢两位了
原以为
《深入学习:JFC Swing——Java基础类组件集》是本好书 居然也会出这种问题
CoolAbu 2003-10-20
  • 打赏
  • 举报
回复
给你一个例子吧,你的例子看着有点累

JDesktopPane desktop = new JDesktopPane();

JInternalFrame jif=new JInternalFrame();

desktop.add(jif);

显示的时候需要
setVisible(true);
noratong 2003-10-20
  • 打赏
  • 举报
回复
楼上两位都已经告诉你了,要show才能秀出窗口来。
prosong 2003-10-20
  • 打赏
  • 举报
回复
iFrame 创建之后,调用show方法才会显示出来
stamp80 2003-10-20
  • 打赏
  • 举报
回复
按理说,JInternalFrame也是要setVisible或者show才能看到的。你做了吗

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧