看了马士兵老师的坦克大战java程序,想按照自己的思路动手编一下,结果界面背景设置不了,
java 作图 不一定要继承JFrame或者Frame,但是所有的组件必须放到顶层容器,Java Swing 有三种顶层容器
创新互联建站成都企业网站建设服务,提供网站制作、网站建设网站开发,网站定制,建网站,网站搭建,网站设计,自适应网站建设,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:18980820575
JFrame:用来设计类似于Windows系统中的窗口形式的应用程序。
·JDialog:和JFrame类似,只不过JDialog是用来设计对话框。
·JApplet:用来设计可以在嵌入在网页中的Java小程序。
而且你的代码 Kosese001既然继承了JFrame 那么他的构造就是个JFrame ,你下面又new JFrame("坦克大战");这样何必继承,直接在构造里面实现操作就可以把Kosese001中,
你的背景色没有显示出来,是由于JFrame 是顶层容器,它默认的布局会设置它的背景色,除非你在前面 加上 jfrmMain.setLayout(null);使得布局变成空布局,下面的jfrmMain.getContentPane().setBackground(Color.green); 才会生效,或者你可以通过设置JFrame上组件的背景色来完成同样的效果 比如 mypaint = new MyPaint();
mypaint.setBackground(Color.green); 还有啥不懂的 可以问我。
JAVA马士兵版贪吃蛇问题
首先new Yard() 是新建一个Yard的实例
你在Snake里new一个 在Start里又new一个
可是这条蛇是属于哪个一个Yard呢
如果按原先作法Snake s = new Snake(this)可以在new Yard的时候把自身传给对应的那条蛇
就是马老师讲的--持有对方引用 用起来很方便
********************************
如果你非得在Snake中直接new 可以按下面的改试试看吧
1. 在Snake.java里添加一个空的构造方法:
Yard y;
snake(){
.......... .........
.......... .........
this.y = new Yard();
}
2. 在Yard.java里把Snake s = new Snake(this)改成 static Snake s = new Snake();
3. 在Start.java把第一句Yard y = new Yard();换成 Yard y = Yard.s.y;
这样用的话显然很不好使
java马士兵老师里面的点
晕了..这..很基础...不过从你提的问题来看,我个人觉得很难和你讲透彻!
你的代码里面p有两个位置
double getDistance(Point p) :
这个p是一个函数参数类型的变量他指的的是Point 对象,
也就是说,你可以直接理解成一个方法里面被传入的对象p
Point p = new Point(1.0, 2.0, 3.0);//这里也有一个p,
这个p是指向一个Point实例对象
实在不好解释...你还的看看基础吧....不然我可能觉得你看不懂我在说什么!
p.x 就是p这个对象里面的x属性!
(x - p.x) 意思当前对象x-传入进来对象的x
(p.x- x ) 传入对象的x-当前对象 x
至于你说结果一样,完全取决你传什么数!
当前文章:关于马士兵java通讯代码的信息
文章网址:http://scyingshan.cn/article/dopdsgs.html