怎样把横的方块变成竖的 ~请高手指点 谢谢!

水城 2010-05-16 02:19:37
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class liatener extends JFrame {
int x=200;
shu si=new shu();
liatener(){
super("监听");
setBounds(100,100,600,600);
setLayout(null);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(si);

JButton jbutton=new JButton();
jbutton.setBounds(10,530,70,30);
jbutton.setText("开始");
jbutton.addActionListener(new ActionListener()
{ //监听的添加
public void actionPerformed(ActionEvent e)
{


Thread th2 = new Thread(si);
th2.start();
System.out.println("正在画图");

}

});
add(jbutton);
}


public static void main(String[] args){
new liatener();
}
}



import java.awt.*;
import java.awt.event.*;

public class shu extends Canvas implements KeyListener,Runnable
{ //加入画布框
int x=105;
int d=21,b=42,c=63;
int y=0;
int q=21,w=42,e=63;
int a=1000;
public shu()
{
setBounds(0, 0, 293, 419);
setBackground(Color.RED);
addKeyListener(this);
}
public void paint(Graphics graphics) //重写paint()方法 //Graphics graphics = new Graphics();
{
graphics.setColor(Color.blue);
graphics.fillRect(x, y, 20, 20);
graphics.fillRect(x+ d, y, 20, 20);
graphics.fillRect(x+ c, y, 20, 20);
graphics.fillRect(x+ b, y, 20, 20);

}
public void update(Graphics graphics)
{

Image off = this.createImage(this.getWidth(),this.getHeight());
Graphics offbuf = off.getGraphics();
paint(offbuf);
graphics.drawImage(off, 0, 0, this.getWidth(), this.getHeight(), null);
//System.out.println("正在画图");
}

public void run()
{
while (true)
{
if (y== 399)
{
Thread th=new Thread(this);
th=null;
}
else{
try
{
Thread.sleep(a);
System.out.println("正在画图");
}
catch (Exception e)
{
e.printStackTrace();

}
q=0;w=0;e=0;
requestFocus();
y= y+21;
repaint();
}
}
}


public void keyReleased(KeyEvent e){ }
public void keyTyped(KeyEvent e) { }
public void keyPressed(KeyEvent e)
{
switch (e.getKeyCode())
{
case KeyEvent.VK_UP:
b=0;c=0;d=0;
break;
case KeyEvent.VK_DOWN:
y=y+21;
repaint();
System.out.println("按下down键");
break;
case KeyEvent.VK_LEFT:
if(x==0){
x=0;
repaint();
System.out.println("你好!");
}else{
x=x-21;
repaint();
}System.out.println("按下left键");
break;
case KeyEvent.VK_RIGHT:
if(x==210){
x=210;
repaint();
}else{
x=x+21;
}System.out.println("按下right键");
break;
}
}
}
...全文
179 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
水城 2010-05-17
  • 打赏
  • 举报
回复
谢谢你们 !
边晓宇 2010-05-16
  • 打赏
  • 举报
回复
AffineTransform里面有设置rotate的方法
然后掉g.setAffineTransform()再画
无聊司马 2010-05-16
  • 打赏
  • 举报
回复
最单间的办法
就是改变它的长和宽
水城 2010-05-16
  • 打赏
  • 举报
回复
能不能给一段代码? 谢谢!有点不明白
kaynezhang 2010-05-16
  • 打赏
  • 举报
回复
道理是一样的,你在up键的处理函数中,把横的信息先记录下来然后删除横的,然后根据横的信息构造一个竖的然后显示就可以了。
水城 2010-05-16
  • 打赏
  • 举报
回复
对不起我补充一点!我想做的是用UP键来转换
kaynezhang 2010-05-16
  • 打赏
  • 举报
回复
最简单的方法,把横的删除,按照横的标准画一个竖的,然后刷新界面就可以了。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧