У меня проблема с Java Swing и JPanel. Я могу сказать, что я - неопытный программист на Java, но не совсем новый для программирования.Должны ли все графические объекты наследовать от JPanel?
Моя проблема заключается в том, что у меня есть класс с именем RandomParticle
,
public class RandomParticle extends Ellipse2D.Double {
private Ellipse2D.Double circle;
public RandomParticle(double xPos , double yPos,double rad) {
setCircle(new Ellipse2D.Double(xPos, yPos, rad, rad));
}
public Ellipse2D.Double getCircle() {
return circle;
}
public void setCircle(Ellipse2D.Double circle) {
this.circle = circle;
}
}
, который я хочу, чтобы перейти на экран (в JFrame, конечно). Частица - это объект по умолчанию, чтобы просто поднять графику. Однако во многих местах говорят, например, here, что для того, чтобы рисовать круг, он должен переопределить метод paintComponent
в JPanel. Это действительно разумно, что, чтобы нарисовать что-то в JFrame, это должно быть JPanel. Однако это может вызвать проблемы, поскольку Java не поддерживает множественное наследование.
В этом случае я не нуждаюсь в RandomParticle
, чтобы быть дочерним элементом ellipse2D, но по мере того, как мои классы становятся более сложными, в какой-то момент мне, скорее всего, понадобится присущий другому классу. Тем не менее, я чувствовал, что этот уровень вопроса имеет хороший уровень для SO, поскольку он не требует каких-либо конкретных знаний о моей программе. Так что я задаюсь вопросом: Можно ли нарисовать круг без того, чтобы класс был ребенком для JPanel?
Ответ MadProgrammer объясняет Swing довольно хорошо, но ответ на ваш вопрос: «Можно ли рисовать круг без класса, являющегося ребенком в JPanel? " Да. Создайте класс модели Circle и создайте Swing DrawingPanel из JPanel, чтобы нарисовать класс модели Circle в методе paintComponent. Вы можете создать несколько классов моделей и нарисовать их в том порядке, в котором вы хотите, на панели рисования. –