如何在无线电100的java swing中创建一个圆并添加鼠标事件

时间:2017-11-06 15:20:36

标签: java swing jframe

如何使用无线电100在Java Swing中创建一个圆并使用鼠标事件添加:

  

当鼠标指针进入圆圈时,它应显示“鼠标输入”消息

这是我到目前为止所能做的:

package Circle;

import java.awt.Graphics;
import javax.swing.JFrame;
import java.awt.Color;

public class Circle extends JFrame 
{
public Circle()
{
    setTitle("Tutorial");
    setSize(1960,1960);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public void paint(Graphics g)
{
    g.setColor(Color.BLACK);
       g.drawOval(500,500,500,500);
         g.fillOval(500, 500, 500, 500);
    }

    public static void main(String args[])
    {
    Circle t = new Circle();
    t.paint(null);
    }
  }

2 个答案:

答案 0 :(得分:2)

这是一个有几个注释的例子:

1-您不需要展开{​​{1}},请使用自定义JFrame并将其设置为框架的内容。

2-覆盖JPanel而非paintComponentpaint负责绘制当前组件(您的面板)。

3-使用Shape对象(此处为paintComponent),因为它有一个可爱的Ellipse2D.Double方法。

4-向面板添加contains(int x,int y)并检查鼠标移动的时间,以及鼠标的位置是否在您的形状内。

5-在Event Dispatch Thread

中显示框架
MouseMotionListener

答案 1 :(得分:0)

您可以向JFrame添加MouseMotionListener。它包含一个方法 void mouseMoved(MouseEvent),您可以使用它来计算鼠标指针在圆圈内的位置。使用MouseEvent.getX()和MouseEvent.getY()以及圆圈的边界来执行此操作。

更简单的方法是使用Ellipse2D。使用圆的边界初始化嵌套的静态类Ellipse2D.Double或Ellipse2D.Float,并调用方法包含(x,y)以验证给定点是否在圆内。 提示:椭圆的宽度和高度是圆圈的 u 的两倍。

您不应该直接调用paint(null),因为它会在方法中抛出NullPointerException。反而更容易使用repaint()。

编辑:有关详细示例,请参阅伯杰的答案。