赞
踩
这个问题是在做第一个小项目——拼图游戏的时候发现的,在做完整个项目以后会有一个系列来详细描述该项目,也会有另一个专栏来记录我在此过程中遇到的一些问题
在创建了一个类用于主程序的入口后,运行是不报错的,但是没有显示图形化界面
但是如果在一个测试类中写程序就会弹出窗口(下图二)
首先看了一下测试类的代码,没有问题,方法设计没问题
import javax.swing.*;
public class Test {
public static void main(String[] args) {
//创建游戏主界面
JFrame gameJFrame = new JFrame();
//设置长宽
gameJFrame.setSize(603,680);
//设置可视化
gameJFrame.setVisible(true);
//创建登录界面
JFrame loginJFrame = new JFrame();
loginJFrame.setSize(488,430);
loginJFrame.setVisible(true);
//创建注册界面
JFrame registerJFrame = new JFrame();
registerJFrame.setSize(488,500);
registerJFrame.setVisible(true);
}
}
再看了一下我定义的每个类的代码,发现问题应该是出在方法体内
import javax.swing.*;
public class GameJFrame extends JFrame{
public void GameJFrame(){
JFrame gameJFrame = new JFrame();
gameJFrame.setSize(603,680);
gameJFrame.setVisible(true);
}
}
import javax.swing.*;
public class LoginJFrame extends JFrame {
public void loginJFrame(){
JFrame loginJFrame = new JFrame();
loginJFrame.setSize(488,430);
loginJFrame.setVisible(true);
}
}
import javax.swing.*;
public class RegisterJFrame extends JFrame {
public void registerJFrame(){
JFrame registerJFrame = new JFrame();
registerJFrame.setSize(488,500);
registerJFrame.setVisible(true);
}
}
GameJFrame
、LoginJFrame
和RegisterJFrame
方法后,如果要调用该方法内的成员变量,要使用this
关键字,而不是像在测试类中新建对象后直接调用新的对象,这样的话由于我们调用的方法是不含参数的,如果new了一个对象会被放到堆内存中,数据也在堆内存中,所以无法访问到public GameJFrame(){
//方法体
}
public LoginJFrame(){
//方法体
}
public RegisterJFrame(){
//方法体
}
import javax.swing.*;
public class GameJFrame extends JFrame {
public GameJFrame(){
this.setSize(603,680);
this.setVisible(true);
}
}
import javax.swing.*;
public class LoginJFrame extends JFrame {
public LoginJFrame(){
this.setSize(488,430);
this.setVisible(true);
}
}
import javax.swing.*;
public class RegisterJFrame extends JFrame {
public RegisterJFrame(){
this.setSize(488,500);
this.setVisible(true);
}
}
【内存原理】
如果小伙伴碰到其它问题也可以留言评论,对于经典的问题我也会单独出一期博客的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。