Swing предназначен для рисования компонентов в 2D-пространстве, а не в 3D-пространстве.
Таким образом, когда компоненты добавляются на одну и ту же панель, Swing будет рисовать компоненты в обратном порядке, добавляя компонент на панель. В вашем случае это выглядит так, как будто вы добавляете компоненты на панель перед добавлением панели прокрутки на панель.
Чтобы вы могли:
- обратный порядок добавления компонентов на панель
- используйте метод
setComponentZOrder(...)
на полосе прокрутки, чтобы установить его значение на 0, чтобы оно отображалось в последнюю очередь.
Однако это все равно вызовет проблему, потому что если вы наведите курсор мыши на кнопку, кнопка появится из-за изменения ее границы. Это потому, что Swing предполагает 2D макеты, а не 3D. Если вы хотите убедиться, что таблица всегда закрашена над кнопкой, вам нужно переопределить метод isOptimizedDrawingEnable()
панели. См. Схема перекрытия для получения дополнительной информации о рисовании ZOrder.