【问题标题】:How to .setStroke(BasicStroke)?如何.setStroke(BasicStroke)?
【发布时间】:2015-07-23 22:15:32
【问题描述】:

我遇到了以下问题:我想创建一个新的 BasicStroke 并将其设置在 Graphics2D 对象上。这是我为该问题编写的代码:

    BasicStroke stil = new BasicStroke(zo.getLinienbreite(),
        BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER);
    g2d.setStroke(stil);

但在 构造函数 BasicStroke(float, int, int) 未定义 的错误旁边(如果我没有正确阅读文档,这实际上不是),它说“Graphics2D 类型中的 setStroke(Stroke) 方法不适用于参数 (BasicStroke)"。

【问题讨论】:

  • 什么是zo.getLinienbreite(),为什么要将它传递给 BasicStroke 构造函数?
  • 2) 你有自己的班级BasicStroke 这个班级附近的任何地方吗?
  • zo.getLinienbreite() 是对象 zo 的一个方法,它返回线条的宽度,因此 BasicStroke 知道线条的宽度。我在这门课附近没有其他 BasicStroke,这实际上是我的第一次,也是唯一一次尝试使用 Strokes。

标签: java swing jpanel paintcomponent graphics2d


【解决方案1】:

BasicStroke constructors 之一采用浮点数和两个整数。我猜zo.getLinienbreite() 不是浮点数,所以你要么必须显式转换它

BasicStroke stil = new BasicStroke( (float)zo.getLinienbreite(), ...

或将其更改为在zo 的类中浮动。完成后,下一个错误将消失。

干杯,

【讨论】:

  • 抱歉,zo.getLinienbreite() 是一个浮点数。 Eclipse 还告诉我 BasicStroke(float, int, int) 是未定义的。这就是我想知道的原因。即使我使用另一个构造函数 g2d.setStroke(stil);不会工作。
  • 您在使用一些奇怪/旧的 JDK 版本吗?我们需要更多信息才能提供帮助。
【解决方案2】:

感谢您的帮助。结果我使用了com.sun.prism.BasicStroke 而不是导入java.awt.BasicStroke。 再次感谢!

【讨论】:

  • 是的,Eclipse好像默认使用这个
猜你喜欢
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 2013-04-25
  • 2013-06-04
  • 2015-07-09
  • 1970-01-01
相关资源
最近更新 更多