У меня возникли проблемы с компоновкой компонентов из созданного ArrayList. Если я обернусь с ним, я могу либо получить первый элемент, либо второй элемент, и если мне повезет, то и не появиться!Устранение неисправностей с помощью ArrayList
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
public class FaceShortCode {
ArrayList<CreateCircles> faceCircles = new ArrayList<CreateCircles>();
public FaceShortCode() {
JFrame main = new JFrame();
main.setTitle("Face Frame");
main.setSize(new Dimension(600, 600));
main.setLocationRelativeTo(null);
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setVisible(true);
Container c = main.getContentPane();
// c.setLayout(null);
faceCircles.add(0, new CreateCircles(100, 50, 400, 350, Color.red));
faceCircles.add(1, new CreateCircles(200, 100, 65, 65, Color.black));
c.add(faceCircles.get(0));
c.add(faceCircles.get(1));
}
class CreateCircles extends JComponent {
double x, y, width, height;
Color myColor;
public CreateCircles(double x, double y, double width, double height,
Color myColor) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.myColor = myColor;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
Ellipse2D circle = new Ellipse2D.Double(x, y, width, height);
g2.setColor(myColor);
g2.fill(circle);
}
}
static class Run {
public static void main(String[] args) {
new FaceShortCode();
}
}
}
Я попытался бросить в main.repaint() после каждого добавления к контейнеру с, попробовал перекрасить() в моем методе живописи, но ничего, кажется, работает. Есть ли еще что-нибудь, чтобы перекрасить(), что я просто отсутствую?
Менеджер компоновки не знает, куда помещать компоненты, которые добавлены в контейнер. Является ли только последний компонент, добавленный последним? Это потому, что последнее добавление заменило предыдущий. Решите, как вы хотите, чтобы макет выглядел, и выбрал менеджер макетов, который даст вам то, что вы ищете. – NormR