public class GraphicsTile {
Я не знаю, как ваш код компилируется, поскольку ваш GraphicsTile не расширяет какой-либо компонент Swing, но вы используете такие методы, как setLayout(...)
и setSize(...)
, что подразумевает, что вы пытаетесь использовать его как JPanel.
Вы не должны использовать setSize (...). Компонент Swing должен иметь предпочтительный размер. Затем менеджер макета установит размер и расположение компонента в соответствии с правилами менеджера макета. Я предполагаю, что у вас есть проблема, потому что предпочтительный размер (0, 0).
Я также понятия не имею, как добавить GraphicsTile в родительский компонент. Опять же, похоже, что вы используете setSize (), когда вы должны позволить менеджеру размещения расположить плитки на игровом поле.
Также, если вы хотите иметь фоновое изображение с кругами вверху, вам нужна иерархическая структура. То есть вам нужно что-то вроде:
Итак, мои предложения:
CirclePanel
необходимо реализовать метод getPreferredSize(...)
для возврата размера вашей пользовательской картины.
Ваш класс GraphicsTile
должен быть расширен JPanel
. Затем вы переопределите метод paintComponent(...)
, чтобы нарисовать фоновое изображение. Теперь вы можете добавить CirclePanel
экземпляров к этой панели, которые будут использовать GridLayout
.