Java Panel与Frame
关于Java的,我定义了2个类MainScene和stageManager,MainScene继承了JFrame,stageManager继承了JPanelMainSce...
关于Java的,
我定义了2个类MainScene和stageManager,MainScene继承了JFrame,stageManager继承了JPanel
MainScene的构造函数里这样写:
super("雷电");
省略…………………………
setSize(MainScene.WIDTH,MainScene.HEIGHT);
this.setResizable(false);
this.setLocationRelativeTo(null);
setVisible(true);
MainScene的按钮函数里这样写:
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("开始游戏"))
{
stageManager = new StageManager(this);
setContentPane(stageManager);
repaint();
StageManager的构造函数是这样写的:
this.setLayout(null);
this.setSize(MainScene.WIDTH,MainScene.HEIGHT);
ImageIcon stageSelectImg = new ImageIcon("background\\stageSelectImg.png");
JLabel stageSelect = new JLabel();
stageSelect.setBounds(0, 0, MainScene.WIDTH,MainScene.HEIGHT);
this.add(stageSelect);
运行结果是有一个窗口,但是点击按钮之后,按钮正常触发了,按钮消失了,其他没有变化,还是MainScene里的那张图,为什么?
另外还想问如何达到场景转换效果,比如场景a有一些控件,场景b有一些别的控件,在场景a点击一个按钮就跳到场景b,但是a和b不是两个窗口,而是a 和 b是同一个窗口
JLabel stageSelect = new JLabel();
刚才是打错了,应该是
JLabel stageSelect = new JLabel(stageSelectImg); 展开
我定义了2个类MainScene和stageManager,MainScene继承了JFrame,stageManager继承了JPanel
MainScene的构造函数里这样写:
super("雷电");
省略…………………………
setSize(MainScene.WIDTH,MainScene.HEIGHT);
this.setResizable(false);
this.setLocationRelativeTo(null);
setVisible(true);
MainScene的按钮函数里这样写:
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("开始游戏"))
{
stageManager = new StageManager(this);
setContentPane(stageManager);
repaint();
StageManager的构造函数是这样写的:
this.setLayout(null);
this.setSize(MainScene.WIDTH,MainScene.HEIGHT);
ImageIcon stageSelectImg = new ImageIcon("background\\stageSelectImg.png");
JLabel stageSelect = new JLabel();
stageSelect.setBounds(0, 0, MainScene.WIDTH,MainScene.HEIGHT);
this.add(stageSelect);
运行结果是有一个窗口,但是点击按钮之后,按钮正常触发了,按钮消失了,其他没有变化,还是MainScene里的那张图,为什么?
另外还想问如何达到场景转换效果,比如场景a有一些控件,场景b有一些别的控件,在场景a点击一个按钮就跳到场景b,但是a和b不是两个窗口,而是a 和 b是同一个窗口
JLabel stageSelect = new JLabel();
刚才是打错了,应该是
JLabel stageSelect = new JLabel(stageSelectImg); 展开
展开全部
Frame是框架窗体,有边框的,Panel是面板,无边框,一般把几个Panel加到一个Frame上
Sun公司的定义:Frame是带标题和边框的最顶层窗体;Panel是个最简单的容器类,它提供空间让程序放其它组件,包括其它Panel。
添加到容器中的组件放在一个列表中。列表的顺序将定义组件在容器内的正向堆栈顺序。如果将组件添加到容器中时未指定索引,则该索引将被添加到列表尾部(此后它位于堆栈顺序的底部)。
public Component getComponent(int n) 获得此容器中的第 n 个组件。public Component[] getComponents() 获得此容器中的所有组件。
这样可以么?
Sun公司的定义:Frame是带标题和边框的最顶层窗体;Panel是个最简单的容器类,它提供空间让程序放其它组件,包括其它Panel。
添加到容器中的组件放在一个列表中。列表的顺序将定义组件在容器内的正向堆栈顺序。如果将组件添加到容器中时未指定索引,则该索引将被添加到列表尾部(此后它位于堆栈顺序的底部)。
public Component getComponent(int n) 获得此容器中的第 n 个组件。public Component[] getComponents() 获得此容器中的所有组件。
这样可以么?
展开全部
1.
actionPerformed是谁的actionPerformed?按钮的吗?那setContentPanel又是谁的方法?
另外你的StageManager的setSize方法没啥用处.因为都会被JFrame拉伸到布满整个JFrame.
如果被拉伸以后setBounds还是不是你原来想的那个位置我就不知道了.你可以在MainScene里使用布局试试.
2.
ab之间转换要看你自己是怎么想的..有很多方法.比如ab是两个JFrame.切换的时候一个show一个hide.按你的要求要在一个JFrame上面的话可以做成2个JPanel.然后Jframe用cardlayout.这样切换的时候就是一个panel隐藏一个显示.
actionPerformed是谁的actionPerformed?按钮的吗?那setContentPanel又是谁的方法?
另外你的StageManager的setSize方法没啥用处.因为都会被JFrame拉伸到布满整个JFrame.
如果被拉伸以后setBounds还是不是你原来想的那个位置我就不知道了.你可以在MainScene里使用布局试试.
2.
ab之间转换要看你自己是怎么想的..有很多方法.比如ab是两个JFrame.切换的时候一个show一个hide.按你的要求要在一个JFrame上面的话可以做成2个JPanel.然后Jframe用cardlayout.这样切换的时候就是一个panel隐藏一个显示.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询