我的打算是设计一个射击型的小游戏。内容是战舰产生子弹攻击飞机,飞机和战舰都可动。
主页面MyFrame布置主页面。
其中Fighter产生飞机,但是飞机我想设计成随机产生的,产生的飞机想加载到主页面中显示。
所以我想在线程类Fighter中调用主页面中显示主菜单的JPanel(xianshi),使用xianshi.add(Fighter)方法来往主页面进行添加。
其中以下语句报错为空指针。为什么?
MyFrame中:
public class MyFrame {
public JPanel xianshi;
public JPanle getXianshi(){
xianshi=this.xianshi;
return xianshi;
}
Fighter中定义了MyFrame的对象myFrame,
this.myFrame.getXianshi().add(fighter);//调用getXianshi()的方法传入xianshi,
这句报错空指针,是什么原因?我很模糊的好像知道一点,但是不清楚,谁能帮忙说清楚一下到底为什么错了。
另外我这个思路应该怎么实现?
主页面MyFrame布置主页面。
其中Fighter产生飞机,但是飞机我想设计成随机产生的,产生的飞机想加载到主页面中显示。
所以我想在线程类Fighter中调用主页面中显示主菜单的JPanel(xianshi),使用xianshi.add(Fighter)方法来往主页面进行添加。
其中以下语句报错为空指针。为什么?
MyFrame中:
public class MyFrame {
public JPanel xianshi;
public JPanle getXianshi(){
xianshi=this.xianshi;
return xianshi;
}
Fighter中定义了MyFrame的对象myFrame,
this.myFrame.getXianshi().add(fighter);//调用getXianshi()的方法传入xianshi,
这句报错空指针,是什么原因?我很模糊的好像知道一点,但是不清楚,谁能帮忙说清楚一下到底为什么错了。
另外我这个思路应该怎么实现?
解决方案 »
- You cannot set autocommit during a managed transaction
- android平台下的aes加密和java平台下的运行结果不同
- 如何删除 TortoiseSVN 下拉列表中的url ?如图
- hibernate 求一个分页的类
- spring 乱码 谢谢各位解决!!!!!!!!
- 一个J2EE的数据库查询错误
- 图片处理 求图片处理方面高手 跪求
- 一个难题,对我而言...
- 哥们,如何将文件的内容上传到ORACLE数据库的CLOB字段中(中文问题)!急呀!
- where can i download msxml for java?
- 毕业设计题目
- 关于java驱动连接SQL2005数据库问题
private void init() {
contentPane.setLayout(null);
//对上侧的显示页面进行设置
xianshi=new JPanel();
xianshi.setBounds(0, 0, 800, 600);
xianshi.setLayout(null);
System.out.println("xianshi=" + this.xianshi);
xianshi=this.xianshi; // 话说这句话不是多此一举?根本是同一个变量。
return xianshi;
}
public MyFrame(String title){
frame=new JFrame(title);
frame.setSize(800,700);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane=frame.getContentPane();
init();
}
我想问一下我那个类外加载的思路对么?
我现在修改成了主面板中加载,然后在线程类中对各自的对象进行调用修改飞机的位置。这样实现了这个功能。但是又遇到了一个问题:就是:
private List<Fighter> list;shootBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//记录线程的数量n
n++;
//初始化一个对象
shoot[n-1]=new Shoot(n,list);//对进行炮弹的位置初始化
shoot[n-1].setSize(10,10);
shoot[n-1].setIcon(zhadan);//显示炸弹的位置
//初始化炮弹的位置
shoot[n-1].setLocation(10*i, 10*(j+1));
xianshi.add(shoot[n-1]);
//点击一次开火就创建一个新的线程
new Thread(shoot[n-1]).start();
}
});
这样shoot[n-1]=new Shoot(n,list);//对进行炮弹的位置初始化
这样每一个Shoot都拥有各自的一个list,每个线程控制一个Shoot,怎样所有的线程都共用同一个list?