gpt4 book ai didi

java - 单击矩形表面时如何将矩形移动到随机位置?

转载 作者:行者123 更新时间:2023-12-02 06:17:24 24 4
gpt4 key购买 nike

昨天我真的很努力地去理解 Action 监听器。但它只适用于 JComponent。您介意给我一些移动矩形位置的例子吗?我知道如何覆盖框架和面板类。但我不明白 Action 监听器的事情。在Java API上,它说面板可以调用方法addmouselistener,我们也可以将参数传递给该方法。我不知道 (MouseListener l) 是什么。顺便问一下,actionlistener 和其他监听器(如 addmouselistener)有什么不同。

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

import javax.swing.*;

public class Littlegame{

public static void main(String[]args)
{
Frame s = new Frame();
}
}
class Frame extends JFrame implements ActionListener
{
public Frame()
{
JFrame f = new JFrame("Little Game");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Panel a =new Panel();
f.add(a);
f.setSize(500,400);
f.setVisible(true);
}

}


class Panel extends JPanel{

public Panel()
{
setBorder(BorderFactory.createLineBorder(Color.green));

}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawRect(150, 150, 30, 30);
g.setColor(Color.BLUE);
g.fillRect(150,150,30,30);
}
public void actionPerformed(ActionEvent e)
{

}
}

最佳答案

首先阅读 How to Write a Mouse Listener .

您的 actionPerformed 方法不会执行任何操作,不是因为您没有附加到任何会生成 ActionEvent 的内容,而是因为您实际上尚未实现 ActionListener 接口(interface)。看看How to write an action listener .

它的长处和短处是。

  • MouseListener 添加到 Panel
  • 当调用 mousePressed (或 mouseReleasedmouseClicked,具体取决于您的需要)时,使用 MouseEvent以确定事件发生的地点。
  • 在某个实例变量中记录 MouseEvent 的位置
  • 调用重绘
  • 调用 paintComponent 时,使用记录 MouseEvent 位置的实例变量并更新矩形。

您可能还想通读Initial Threads

关于java - 单击矩形表面时如何将矩形移动到随机位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21323326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com