Вы добавляете statusbar
в несколько различных мест в дереве компонентов, Swing плохо с этим справляется (или вообще).
Создайте отдельные Bar
экземпляры каждый раз, когда вы используетеесли вы хотите, чтобы их отображение было синхронизировано, они должны использовать одну и ту же модель.
Редактировать
Ах, на второй взгляд, проблема в том, что вы никогда не устанавливаете размер (илипредпочтительный размер) для Bar
компонентов, поэтому менеджер раскладки прижимает их к 0.
Попробуйте:
public static class Bar extends JComponent {
private Bar() {
setPreferredSize(new Dimension(25, 5));
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillRect(0, 0, 100, 10);
}
}
Вы также должны добавить frame.pack()
перед отображением.
(множественные ссылки на один и тот же компонент тоже верны)