eclipse编译没问题,但是运行不出界面。代码如下
/**功能:1、坦克界面*2、画出一个坦克*/packagecom.tan1;importjava.awt.*;importjavax.swing.*;publiccla...
/*
*功能:1、 坦克界面
* 2、画出一个坦克
*/
package com.tan1;
import java.awt.*;
import javax.swing.*;
public class tanketu1 extends JFrame {
MyPanel mp=null;
public static void main(String[] args) {
// TODO Auto-generated method stub
MyPanel mtg=new MyPanel();
}
//构造函数
public tanketu1()
{
mp=new MyPanel();
this.add(mp);
this.setSize(400,300);
this.setVisible(true);
}
}
//我的面板
class MyPanel extends JPanel
{
//定义一个我的坦克
Hero hero=null;
public MyPanel()
{
hero=new Hero(10,10);
}
//重新覆盖paint
public void paint(Graphics g)
{
super.paint(g);
g.fillRect(0,0,400,300);
this.drawTank(hero.getX(), hero.getY(), g, 0, 0);
// g.setColor(Color.yellow);
// //画出坦克
// //1.画出左面的矩形
// g.fillRect(hero.getX(), hero.getY(), 5, 30);
// //画出右边的矩形
// g.fillRect(hero.getX()+15,hero.getY(), 5, 30);
// //画出中间矩形
// g.fillRect(hero.getX()+5,hero.getY()+5, 10, 20);
// //画出圆形
// g.fillOval(hero.getX()+5,hero.getY()+10, 10, 10);
// //画出炮筒
// g.drawLine(hero.getX()+10,hero.getY()+15, hero.getX()+10, hero.getY());
}
//画出坦克的函数
public void drawTank(int x,int y,Graphics g,int direct,int type)
{
switch(type)
{
case 0:
g.setColor(Color.yellow);
break;
case 1:
g.setColor(Color.cyan);
break;
}
//判断方向
switch(direct)
{
case 0:
//画出坦克
//1.画出左面的矩形
g.fillRect(x, y, 5, 30);
//画出右边的矩形
g.fillRect(x+15,y, 5, 30);
//画出中间矩形
g.fillRect(x+5,y+5, 10, 20);
//画出圆形
g.fillOval(x+5,y+10, 10, 10);
//画出炮筒
g.drawLine(x+10,y+15, x+10, y);
break;
}
}
}
//坦克类
class Tank
{
//表示坦克的横坐标
int x=0;
int y=0;
public Tank(int x,int y)
{
this.x=x;
this.y=y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
//我的坦克
class Hero extends Tank
{
public Hero(int x,int y)
{
super(x,y);
}
} 展开
*功能:1、 坦克界面
* 2、画出一个坦克
*/
package com.tan1;
import java.awt.*;
import javax.swing.*;
public class tanketu1 extends JFrame {
MyPanel mp=null;
public static void main(String[] args) {
// TODO Auto-generated method stub
MyPanel mtg=new MyPanel();
}
//构造函数
public tanketu1()
{
mp=new MyPanel();
this.add(mp);
this.setSize(400,300);
this.setVisible(true);
}
}
//我的面板
class MyPanel extends JPanel
{
//定义一个我的坦克
Hero hero=null;
public MyPanel()
{
hero=new Hero(10,10);
}
//重新覆盖paint
public void paint(Graphics g)
{
super.paint(g);
g.fillRect(0,0,400,300);
this.drawTank(hero.getX(), hero.getY(), g, 0, 0);
// g.setColor(Color.yellow);
// //画出坦克
// //1.画出左面的矩形
// g.fillRect(hero.getX(), hero.getY(), 5, 30);
// //画出右边的矩形
// g.fillRect(hero.getX()+15,hero.getY(), 5, 30);
// //画出中间矩形
// g.fillRect(hero.getX()+5,hero.getY()+5, 10, 20);
// //画出圆形
// g.fillOval(hero.getX()+5,hero.getY()+10, 10, 10);
// //画出炮筒
// g.drawLine(hero.getX()+10,hero.getY()+15, hero.getX()+10, hero.getY());
}
//画出坦克的函数
public void drawTank(int x,int y,Graphics g,int direct,int type)
{
switch(type)
{
case 0:
g.setColor(Color.yellow);
break;
case 1:
g.setColor(Color.cyan);
break;
}
//判断方向
switch(direct)
{
case 0:
//画出坦克
//1.画出左面的矩形
g.fillRect(x, y, 5, 30);
//画出右边的矩形
g.fillRect(x+15,y, 5, 30);
//画出中间矩形
g.fillRect(x+5,y+5, 10, 20);
//画出圆形
g.fillOval(x+5,y+10, 10, 10);
//画出炮筒
g.drawLine(x+10,y+15, x+10, y);
break;
}
}
}
//坦克类
class Tank
{
//表示坦克的横坐标
int x=0;
int y=0;
public Tank(int x,int y)
{
this.x=x;
this.y=y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
//我的坦克
class Hero extends Tank
{
public Hero(int x,int y)
{
super(x,y);
}
} 展开
展开全部
// TODO Auto-generated method stub
MyPanel mtg=new MyPanel();
tanketu1 a = new tanketu1();//少了这句话
}
对于Component组件,有些是不能单独使用的,需要放在其他容器之中,例如panel就是,你new一个panel,是不可能看到他的,需要把它放到JFrame里面,你下面this.add(mp);就是这个意思了,其实你上面的new MyPanel在这里就没有用了,关于其他地方的错误你再自己琢磨琢磨。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询