有两个按钮A和B通过键盘移动A当A移动时如果接触到B!让B消失!这要怎样实现啊?
解决方案 »
- Swing下,一些输入法不能显示输入框的问题。查找了很长时间,找不到解决办法
- JAVA
- 前辈们,异常捕捉问题请教!
- Java Thread 程序出现了多个结果????
- frame.pack();什么意思?
- java简单问题
- JFrame如何将其置于屏幕中间
- 小弟,遇到了java.lang.NullPointerException,帮忙看看问题出在哪里,送分100,急,在线等.....
- 大家别嫌题简单,怎么访问别的方法里定义的对象,谢谢了。
- 新手在线等解决,急!Exception in thread "main" java.lang.NullPointerException
- 如何用Java实现在DOS中用户输入的密码不显示?
- 加急快信~~~~~~~~~~数组问题,望高手指点!~~
java下面的布局控制不太容易实现这些
不如其他语言来的方便
帮你顶!
glorywine(已非當年)我只要求能在一个JPanel中实现就可
将布局设为NULL //setLayout(null);我自己用的getX()和getY()可以实现,但是太死板了!比如如果A的左上角碰到B的右下角等等
难道都要用getX()和getY()用if()来比较吗? 我是想大家谁有更好的方法
import java.awt.Rectangle;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class MoveButton
{
public static void main(String[] args)
{
JPanel p = new JPanel(null);
final JButton btn1 = new JButton("Button 1");
final JButton btn2 = new JButton("Button 2");
p.add(btn1);
p.add(btn2);
btn1.setSize(btn1.getPreferredSize());
btn2.setSize(btn2.getPreferredSize());
btn1.setLocation(100, 100);
btn2.setLocation(200, 100); btn1.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e)
{
int dx, dy;
if (e.getKeyCode() == KeyEvent.VK_UP) {
dx = 0; dy = -1;
}
else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
dx = 0; dy = 1;
}
else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
dx = -1; dy = 0;
}
else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
dx = 1; dy = 0;
}
else {
return;
}
btn1.setLocation(btn1.getX() + dx, btn1.getY() + dy);
if (btn2.isVisible()) {
Rectangle rect1 = btn1.getBounds();
Rectangle rect2 = btn2.getBounds();
if (rect1.intersects(rect2)) {
btn2.setVisible(false);
}
}
}
});
JFrame f = new JFrame("MoveButton");
f.getContentPane().add(p, BorderLayout.CENTER);
f.setSize(400, 400);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
if (btn2.isVisible()) {
Rectangle rect1 = btn1.getBounds();
Rectangle rect2 = btn2.getBounds();
if (rect1.intersects(rect2)) {
btn2.setVisible(false);
}
}
========================
妙啊~
不过如果我有几十个按钮
是不是就要生成几十个Rectangle 啊?有没有直接通过按钮本身的方法就可以实现的?
比如通过A.contains(B.getX(),B.getY());
int n = p.getComponentCount();
for (int i = 0; i < n; i++) {
Component c = p.getComponent(n);
if (c == btn1 || !c.isVisible()) {
continue;
}
Rectangle rect2 = c.getBounds();
if (rect1.intersects(rect2)) {
c.setVisible(false);
}
}
public Rectangle2D find(Point2D p) {
for (int i = 0; i < squares.size(); i++) {
Rectangle2D r = (Rectangle2D) squares.get(i);
if (r.contains(p))
return r;
}
return null;
}...
仅供参考
强啊!
学习!