Вы делаете это (или что-то подобное) 3 раза в своем коде:
new Rectangle(new Point(10, 10), andy.getPreferredSize()));
Это не компилируемая Java.Как сообщение об ошибке компиляции говорит:
constructor Rectangle(Point, Dimension) is undefined
Почему это говорит?В конце концов, в java.awt.Rectangle
( javadoc ) есть конструктор Rectangle(Point, Dimension)
.
Хорошо, давайте рассмотрим фактические типы.
- Первый аргументявно
java.awt.Point
.ОК. - Второй аргумент является результатом вызова метода для экземпляра
IFigure
.Хммм.
Если вы посмотрите документацию для IFigure
, вы увидите, что методы getPreferredSize
возвращают объект org.eclipse.draw2d.geometry.Dimension
, а не java.awt.Dimension
.
По сути, высмешивают типы SWT и AWT.
import java.awt.*;
Это неправильно.Поскольку вы (очевидно) программируете для платформы Eclipse / SWT, вы должны импортировать и использовать исключительно классы SWT.Смешивание SWT с AWT (или Swing, или JavaFX, или Android) apis может привести к проблемам.