0 0

一个swing中组件移动的问题5

在Jframe里面我放了一个map的Jpanel,map里面又放了一个tank的Jpanel,当我试图用setlocation移动tank这个jpanel时,第一次能移动成功,之后就无效了,请问是怎么回事?下面是部分代码:
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JPanel;

public class Map extends JPanel
{
Image mapImage; //存放坦克图片
TankInfo tank;

public Map()
{
//获取图片并设定初始化map框架
mapImage=TankClient.tk.getImage(Map.class.getClassLoader().getResource("Resource/simple.png"));
setSize(600,400);
setLayout(null);
//让map可以获取焦点来监听键盘
setFocusable(true);
//创建坦克对象
tank=CreateTank(200,300,1,1,TankInfo.Direction.DOWN,this);
add(tank);
//加入键盘监听
addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
switch(e.getKeyCode()){
case KeyEvent.VK_W:
System.out.println("w is pressed");
tank.move();
break;
case KeyEvent.VK_S:
tank.move();
break;
case KeyEvent.VK_A:
tank.move();
break;
case KeyEvent.VK_D:
tank.move();
break;
}
}
});
}

/**
* @param x 初始x坐标
* @param y 初始y坐标
* @param team 所属小组
* @param life 生命值
* @param dir 方向
* @param map 所在地图
* @return 创建的坦克对象
*/
public TankInfo CreateTank(int x,int y,int team,int life,TankInfo.Direction dir,Map map){
TankInfo tank=new TankInfo( x, y, team, life, dir, map);
return tank;
}

//系统自动画出组件
protected void paintComponent(Graphics g)
{
g.drawImage(mapImage, 2, 30, null);
}

}

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JPanel;

public class TankInfo extends JPanel
{
//所有方向
enum Direction{LEFT,RIGHT,UP,DOWN,LEFTUP,LEFTDOWN,RIGHTUP,RIGHTDOWN};
//坦克的图片
Image tankImage=TankClient.tk.getImage(TankInfo.class.getClassLoader().getResource("Resource/tank_0.png"));

//坦克当前位置
int x;
int y;

static int speed=50;//速度
int team;//所属小组
int life;//生命值
Direction dir;//坦克方向
Map map;//所在地图

public TankInfo(int x, int y,int team,int life,Direction dir,Map map){
this.x=x;
this.y=y;
this.team=team;
this.life=life;
this.dir=dir;
setSize(60,60);
setLocation(x, y);
this.map=map;
}

public void paintComponent(Graphics g){
g.drawImage(tankImage, 0, 0, null);
}
//移动坦克所在的panel
public void move(){
setLocation(x,y-speed);
}

}
2012年3月30日 10:36

1个答案 按时间排序 按投票排序

0 0

你把代码打包上传上来,给你看看。

2012年3月30日 18:09

相关推荐

    Java Swing中的可拖动组件

    创建有用的可拖动通用组件以创建自定义图形桌面应用程序,例如可视化编辑器或多媒体管理

    swing中的滚动条.doc

    JScrollPane中的ViewPort是一种特殊的对象,通过它就可以查看基层组件,滚动条其实就是沿着组件移动“视点”,这样就可以查看隐藏的部分。

    swing+Java+多线程

    用户能通过GUI组件指定生成小球的数量,每个小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力...

    Java程序设计:第9章 GUI组件和用户界面设计 .ppt

    Swing 组件是建立在 AWT 之上的一个高级 GUI 组件,提供了更多的 GUI 设计工具。 二、事件处理模型 事件处理模型是 GUI 组件的核心,负责处理用户的交互事件,如按钮点击、鼠标移动、键盘输入等。Java 语言中的...

    java入门补充SwingUI编程完美版资料.ppt

    * helloJFrame.java是一个简单的Swing UI编程示例,展示了JFrame的基本使用。 * helloJFrame.java的主要代码包括: + 构造函数helloJFrame(),用于初始化JFrame。 + initComponents()方法,用于初始化组件。 + ...

    基于Swing的打砖块游戏的Java程序

    程序通过创建Ball、Paddle和Block类来实现游戏的运行逻辑,其中...程序的入口 main 方法通过调用 SwingUtilities.invokeLater 方法来创建一个线程并运行 BreakBlockGame 类,以避免在主线程中创建和显示 Swing 组件。

    随机游戏 Java swing

    自己用netbeans做的一个随机的小游戏 有计时器等等 自己看 是一个jar文件 运行需要Java环境 双击就可运行

    swing-assignmentdialog:用于在两个 JTable 之间移动对象的通用组件

    一个完全通用的 Swing 组件,可让您轻松地在两个列表之间分配任何类型的自定义对象。 Maven < groupId>com.googlecode.swing-assignmentdialog</ groupId> < artifactId>assignmentdialog < version>1.0.0 集成...

    JavaSwing界面设计所有控件及示例.ppt

    它们用于创建初始界面,为其他组件提供一个容器,以构建满足用户需求的操作界面。 中间容器 中间容器是指-between顶层容器和基本组件之间的容器,例如JPanel、JScrollPane、JSplitPane、JTabbedPane等。它们提供了...

    swing蜘蛛纸牌

    //将组件移动到容器中指定的顺序索引。 pane.setComponentZOrder(this, 1); //在Hashtable中保存新的节点信息 main.table.remove(p); p.x += x; p.y += y; this.setLocation(p); main.table.put(p, this)...

    JAVA Swing图形用户界面编程 多线程编程 弹球游戏

    用户能通过GUI组件指定生成小球的数量,每个小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力...

    Java语言程序设计:第十章 Java图形用户界面.ppt

    使用JBuilder 2005创建Java框架,需要创建一个新的Java项目,并选择“Swing”作为GUI组件库。然后,需要设计GUI界面,并编写事件处理代码。 九、使用MyEclipse 9创建Java框架 MyEclipse 9是Java集成开发环境(IDE...

    windowbuilder中layout介绍

    Layout 是 WindowBuilder 中的一个重要概念,负责管理 GUI 组件的布局和位置。下面我们将深入探讨 WindowBuilder 中的 Layout 的概念和实现。 LayoutManager WindowBuilder 提供了 LayoutManager,这是一个布局...

    java迷宫小游戏源代码.pdf

    "Java迷宫小游戏源代码分析" Java迷宫小游戏源代码是使用Java语言编写的迷宫小游戏程序。...该程序是一个简单的Java迷宫小游戏程序,使用了Java的图形用户界面组件和键盘事件来创建游戏界面和控制游戏中的角色移动。

    Java编写一个简单计算器附源码.docx

    知识点:Java Swing 库是Java平台上的一个图形用户界面工具包,提供了丰富的GUI组件和布局管理器,可以用来创建复杂的桌面应用程序。 2. 事件监听器的使用:文档中使用了事件监听器来响应按钮的点击事件,使得...

    实验五JAVAGUI程序设计.doc

    1. 创建一个 Java GUI 程序,实现将 5 个按钮添加到 JFrame 容器中,并分别采用不同的布局管理器,观察按钮的布局情况。 2. 编写一个 Java GUI 程序,该程序创建一个菜单。 四、实验五 JAVAGUI 程序设计的实验结果...

    使用JAVA编程一个游戏-老鹰捉小鸡游戏

    这个程序使用 Java 的 Swing 组件库,通过继承 JFrame 和 JPanel 类实现游戏界面和基本功能。主要的类包括 EagleAndChicks、MyPanel 类以及 Point 类。其中 MyPanel 类是游戏主面板,绘制老鹰和小鸡,并用 ArrayList...

    计算机外文翻译.pdf

    框架是计算机领域中的一个重要概念,它可以帮助开发者快速开发高质量的应用程序,提高开发效率和降低开发成本。 在此基础上,我们可以继续探讨框架在计算机领域中的应用: 1. Web应用程序框架:例如Struts、Spring...

    数据结构课程设计迷宫算法的实现-JAVA.doc

    数据结构课程设计迷宫算法的实现是使用 JAVA 语言编写的,旨在设计一个迷宫算法的实现,提供图形用户界面来展示迷宫的大小、入口及出口位置和初始状态等,并演示走迷宫的过程和结果。 知识点1:迷宫算法的实现 ...

    java中 实现无标题无边框的窗体能够用鼠标拖动改变窗口大小

    1、无标题栏,自定义边框,...2、像QQ面板一样,需要时,可以根据需要向上加组件; 3、可以拖动修改大小,拖动移动位置; 4、2种效果比较,demo_02是最终效果,有点小问题,就是左、上拉伸时,右、下有点小小的抖动;

Global site tag (gtag.js) - Google Analytics