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 鼠标自动移动

    综上所述,"java swing 鼠标自动移动"项目结合了Java Swing GUI编程、鼠标事件处理、Robot类的使用、以及应用打包技术,为开发者提供了一个实用的示例,展示了如何在Java环境中实现鼠标自动移动。

    swing小黑点移动

    在Swing中,我们可以通过编程实现组件的动画效果,例如让一个小黑点在窗口上移动。这个过程涉及到Java GUI编程的一些核心概念,包括组件、布局管理器、事件处理以及定时器。 首先,Swing是Java AWT(Abstract ...

    Swing组件下载(常用组件)

    Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。Swing提供了一系列组件,使得开发者可以构建功能丰富的、具有吸引力的桌面应用程序。以下是一些Swing组件的详细...

    swing自制组件(二)

    在Java的Swing库中,开发者可以...总的来说,自定义Swing组件是提升Java GUI应用个性化和功能性的有效手段。通过深入理解 Swing 的组件体系结构和事件模型,开发者能够构建出符合特定需求的组件,从而提高用户体验。

    swing包组件使用案例

    Swing包是Java GUI编程的重要组成部分,它是Java Foundation Classes (JFC)的一部分,提供了丰富的图形用户界面组件。...这些案例将帮助你快速掌握Swing组件的使用,为构建功能丰富的Java桌面应用打下坚实基础。

    基于Java的开源的Swing组件 JIDE.zip

    JIDE是一个强大的开源库,专为Java Swing设计,旨在扩展和增强Swing组件的功能。它提供了一系列预构建的、高度定制化的UI组件,可以帮助开发者创建专业级别的应用程序。JIDE库不仅包含常见的UI元素,如表格、网格、...

    swing组件透明拖动

    在这个例子中,我们创建了一个无边框的JFrame,并设置了80%的透明度。当用户按下鼠标时,记录下鼠标点击位置(dragOffset),然后在鼠标拖动时,根据这个偏移量更新窗口的位置。 需要注意的是,虽然组件透明和拖动...

    Swing组件一览表

    - `JApplet`:用于在Web浏览器中运行的Swing组件,但通常不直接使用,因为现代Web应用更倾向于使用HTML5和JavaScript。 - `JDialog`:创建对话框,如警告或确认框。`JDialog()`、`JDialog(Frame owner)`和`JDialog...

    Swing 移动矩形

    "Swing 移动矩形"这个主题主要涉及如何在Swing组件上动态地绘制并移动一个矩形。这篇博客文章可能探讨了如何利用Swing的绘图功能来实现一个交互式的图形应用,让用户能够通过鼠标或键盘操作移动图形。 1. **Swing...

    自定义Swing组件代码

    有时,内置的Swing组件可能无法满足特定的应用场景,例如,你可能需要一个具有特殊布局、外观或行为的组件。这时,自定义组件就显得尤为重要,它允许我们扩展和定制现有组件,或者从头创建全新的组件。 三、自定义...

    Swing组件的DnD拖拽深度分析

    Swing组件的拖放(Drag and Drop, DnD)功能是Java GUI编程中的一个重要特性,它允许用户通过直观的拖动操作在组件之间传递数据。深入理解Swing的DnD机制对于创建用户友好、交互性强的应用程序至关重要。本文将详细...

    java swing组件例子

    - **JComboBox**: JComboBox提供了一个下拉列表,用户可以从预定义的选项中选择一个。 - **JCheckBox**和**JRadioButton**: 分别代表复选框和单选按钮,用于提供多选或二选一的选择。 2. **Swing组件事件处理** ...

    Java Swing中的可拖动组件

    Java Swing 是一个用于构建桌面应用程序的 Java 库,它提供了丰富的用户界面组件,如按钮、文本框、菜单等。在Swing中实现可拖动组件是创建交互式和直观应用程序的关键技术之一,尤其适用于开发像可视化编辑器或...

    Java使用swing 组件窗体美化的例子.rar

    本例子中的"Java使用swing 组件窗体美化的例子.rar"是一个很好的学习资源,它展示了如何利用Swing来设计美观的窗口应用,并且包含窗体风格的动态切换功能。 Swing是Java AWT(Abstract Window Toolkit)的扩展,...

    Java_swing_api_中文

    7. **Swing Worker**:Swing Worker类是用来处理后台任务的,它解决了Swing组件在主UI线程外执行耗时操作的问题,避免了用户界面的冻结。 8. ** Nimbus Look and Feel**:Nimbus是Swing自带的一种现代外观和感觉,...

    Swing全部组建应用实例

    在提供的"Swing组建应用例子"压缩包中,你将找到各种Swing组件的实例代码,涵盖上述所有知识点。通过学习和运行这些示例,你可以深入理解Swing的工作原理和实际应用,提升你的Java GUI开发能力。

    基于Swing组件编写华容道Java程序

    在本项目中,“基于Swing组件编写华容道Java程序”是一个使用Java语言,并借助NetBeans集成开发环境(IDE)创建的可视化游戏应用。Swing是Java的一个图形用户界面(GUI)工具包,它提供了丰富的组件库,允许开发者...

    精选_基于Java Swing JFream 组件的趣味推箱子小游戏_源码打包

    在本项目“基于Java Swing JFream组件的趣味推箱子小游戏”中,开发者利用Swing构建了一个有趣的游戏应用,让用户在编程的世界里体验经典游戏的乐趣。 首先,JFrame是Swing中的顶级容器,它作为窗口的基础,承载着...

    Swing三个漂亮实例

    Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分。在本文中,我们将深入探讨Swing的三个精彩实例:打造半透明Swing组件、淡入淡出效果以及模拟下雪的透明面板。 1...

Global site tag (gtag.js) - Google Analytics