Вот «основной» код:
Код: Выделить всё
JFrame frame = new JFrame();
JPanel panel = new JPanel(new BorderLayout());
panel.add(new Circle(-100, 0, 200));
panel.add(new Circle(-25, 0, 650));
JScrollPane scrollPane = new JScrollPane (panel);
frame.add(scrollPane);
frame.setSize(600, 600);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Код: Выделить всё
public class Circle extends JComponent {
private int x;
private int y;
private int width;
public Circle(int x, int y, int width) {
this.x = x;
this.y = y;
this.width = width;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillOval(this.x, this.y, this.width, this.width);
}
}
- JPanel не показывает круги, если для макета установлено значение BorderLayout; когда для него установлено значение BorderLayout, он показывает только последний добавленный к нему круг.
- Я попробовал использовать JScrollPane, чтобы сделать JPanel прокручиваемым. Однако, когда я рисую круг большого размера, чтобы проверить, работает ли он, JScrollPane не показывает полосу прокрутки, чтобы увидеть все это. (См. изображение ниже)
Надеюсь, это наполовину понятно, Я очень новичок в Swing. Любые идеи будут очень оценены!
Подробнее здесь: https://stackoverflow.com/questions/784 ... re-element