返回信息流想做一个这样的程序:
上下左右键 控制 方块四方行走,程序做出来了,如下:
但是有一个疑问,注释掉的那句话,如果去掉注释,图形就不出来,为什么?
第一个类:
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Go extends JFrame{
Mp mp=new Mp();
public Go()
{
//this.setLayout(null);
this.add(mp);
this.setBounds(300, 300, 400, 400);
this.setVisible(true);
this.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==38)
{
mp.y=mp.y-10;
mp.repaint();
}
else if(e.getKeyCode()==40)
{
mp.y+=10;
mp.repaint();
}
else if(e.getKeyCode()==37)
{
mp.x-=10;
mp.repaint();
}
else if(e.getKeyCode()==39)
{
mp.x+=10;
mp.repaint();
}
}
}
);
}
public static void main(String[] args) {
Go go=new Go();
}
}
第二个类:
import java.awt.Graphics;
import javax.swing.JPanel;
public class Mp extends JPanel{
public static int x=200;
public static int y=200;
@Override
public void paint(Graphics g)
{
super.paint(g);
g.drawRect(x, y, 20, 20);
}
}
这是一条镜像帖。来源:北邮人论坛 / java / #15141同步于 2010/7/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
不问不行了。。。。。。。。。
wysln
2010/7/9镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
注释掉的那句话,就是
//this.setLayout(null);
我去掉注释 就等于绝对布局 那么就应该按照我的摆放显示
可是没想到 绝对布局的时候不出图形。为什么???
当你不注释掉时,JFrame的默认布局管理器是BorderLayout,这是一个布置容器的边界布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:南、北、东、西和中间区域。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST 和 CENTER。this.add(mp);这句代码把mp面板放到了JFrame的CENTER区域,此时mp会占据整个窗口,这种情况下会出现你要的图形。当你注释掉那句话后,这时mp并没有设置大小,既然mp都没有出现,就更不会出现mp上绘制的图形了。
谢谢高手
我想绝对布局,设置成setlayout(null),又想这个图不占据整个区域。
我该怎么做呢?
【 在 buptljl 的大作中提到: 】
: 当你不注释掉时,JFrame的默认布局管理器是BorderLayout,这是一个布置容器的边界布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:南、北、东、西和中间区域。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST 和 CENTER。this.add(mp);这句代码把mp面板放到了JFrame的CENTER区域,此时mp会占据整个窗口,这种情况下会出现你要的图形。当你注释掉那句话后,这时mp并没有设置大小,既然mp都没有出现,就更不会出现mp上绘制的图形了。
: --
: 要学会放弃,以积极的心态面对未来的生活
: ...................
当你使用绝对布局的时候,每个组件都要setBounds才可以
【 在 wysln (浮云) 的大作中提到: 】
: 谢谢高手
: 我想绝对布局,设置成setlayout(null),又想这个图不占据整个区域。
: 我该怎么做呢?
: ...................
我对mp这个类setbounds了
【 在 ox 的大作中提到: 】
: 当你使用绝对布局的时候,每个组件都要setBounds才可以
: 【 在 wysln (浮云) 的大作中提到: 】
: : 谢谢高手
: ...................