java Rectangle:为什么会出现错误“ getPreferredSize()”

时间:2019-06-09 03:15:37

标签: java swt

为什么错误此代码:

Folly

错误:

layout.setConstraint(andy, new Rectangle(new Point(10, 10), andy.getPreferredSize()));

我不明白该错误。 请帮助调试错误代码。

The constructor Rectangle(Point, Dimension) is undefined
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The constructor Rectangle(Point, Dimension) is undefined
The constructor Rectangle(Point, Dimension) is undefined
The constructor Rectangle(Point, Dimension) is undefined

at testdot.testdot.createDiagram(testdot.java:66)
at testdot.testdot.run(testdot.java:23)
at testdot.testdot.main(testdot.java:92)

1 个答案:

答案 0 :(得分:2)

您在代码中执行了3次(或类似操作)

use strict;
use diagnostics;

my @nums = qw/ 1 23 5432 45 /;
my $max_length = shift reverse sort map {1 + log($_)/log(10)} @nums;
printf "%d\n", $max_length;

它不是可编译的Java。如编译错误消息所述:

Experimental shift on scalar is now forbidden at - line 5, near "@nums;"

为什么这么说?毕竟, new Rectangle(new Point(10, 10), andy.getPreferredSize())); javadoc)中有一个 constructor Rectangle(Point, Dimension) is undefined 构造函数。

让我们看看实际的类型。

  • 第一个参数显然是Rectangle(Point, Dimension)。好吧。
  • 第二个参数是对java.awt.Rectangle实例的方法调用的结果。嗯

如果您查看java.awt.Point的文档,将会发现IFigure方法返回一个IFigure对象,而不是getPreferredSize

基本上,您是在混合使用SWT和AWT类型。

org.eclipse.draw2d.geometry.Dimension

那是错的。由于(显然)您是在为Eclipse / SWT平台编程,因此您应该专门导入和使用SWT类。将SWT与AWT(或Swing或JavaFX或Android)api混合使用会导致问题。