【问题标题】:Arc2D.Double contains(double x, double y) method not workingArc2D.Double contains(double x, double y) 方法不起作用
【发布时间】:2011-03-08 06:44:34
【问题描述】:

背景:一些背景信息,这是发生在 JFrame 上的 JPanel 内的 JPanel (PiePanel) 上。在 PiePanel 上,我添加了一个组件,该组件从扩展 Arc2D.Double 的 Pie 类中绘制对象并以 PIE 形式创建弧。基本上我是在制作饼图。

我在 Pie 类中制作了用于制作弧的常量:x = 20, y = 20, w = 240, h = 240

public TestComponent()  {
    setPreferredSize(new Dimension(280,270));
    pies = new ArrayList<PieChartSlice>();
    Pie a = new Pie(0, 120, Color.black);
    pies.add(a);
    System.out.println(a.contains(150.0,130.0));
    }

由于尺寸为 280 x 270,并且我以 x,y = 20 和 h,w = 240 开始每个饼的边界框,因此饼图的中间应为 (140,140)。由于 Pie 'a' 是 120 度,坐标 150,130 肯定应该在 Pie a 中,但它返回 false!

a.toString() 似乎也给出了 PieChartSlice@0

【问题讨论】:

  • 也许您可以显示 Pie 类代码?
  • 你能发布一个SSCCE 来演示仅使用Arc2D.Double 类的问题吗?
  • 我的一个朋友向我展示了我是多么的白痴,向人们展示了;)
  • @user:如果有人遇到类似问题,你能发布解决方案吗?

标签: java user-interface jpanel contains geometric-arc


【解决方案1】:

我刚刚遇到了这个问题,虽然我无法在没有看到他们的代码的情况下明确地提供 OP 问题的答案,但我确实找到了解决我相同问题的方法(弧内明显没有“看到”的点。 )

调用构造函数时

Arc2D.Double(double x, double y, double w, double h, double start, double extent,
             int type)

Arc2D.PIE 用于int type。其他两种类型对我不起作用。

【讨论】:

    猜你喜欢
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多