JPanel отключается, FlowLayout работает не так, как задумано

StackOverflow https://stackoverflow.com/questions/815192

Вопрос

На днях этот код работал. Я изменил некоторые вещи и перезапустил его, и теперь он не работает, как задумано. Очевидно, что то, что я изменил, изменило поведение, но я вернулся и отменил все эти изменения, и это все еще не работает. Не обращая внимания на этот бит информации (для начала), почему этот код не размещает сетку JLabels 15x15 внутри JPanel?

gameBoard.setLayout(new FlowLayout());

for (int i = 0; i < 15; i++)
{
    for (int j = 0; j < 15; j++)
    {
        JLabel tile = new JLabel("");                       
     tile.setHorizontalAlignment(SwingConstants.CENTER);
        tile.setPreferredSize(new Dimension(27, 27));
        tile.setBorder(new EtchedBorder());
        tile.setEnabled(false);

        gameBoard.add(tile);
    }
}

gameBoard - это JPanel, определенный с помощью GUI Builder NetBeans. Он имеет предпочтительный размер, максимальный размер (такой же, как предпочтительный). Параметры горизонтального / вертикального изменения размера отключены, однако, когда этот код запускается, каждая кнопка расширяется по горизонтали, не прерываясь.

Если я правильно понимаю, FlowLayout должен обернуть элементы, когда они достигнут конца содержащего их элемента. Это происходило до сегодняшнего дня, я действительно не знаю, почему это поведение прекратилось?

Это было полезно?

Решение 4

Я понял это. Видимо, мне пришлось установить предпочитаемый размер в самом коде. Просто установить его в окне свойств Netbeans недостаточно. Странно.

Другие советы

В интересах научить человека ловить рыбу:

Ревизионные системы управления великолепны. Даже ваша система регулярно выполняет резервное копирование вашего источника.

Полезный метод отладки - убирать вещи, пока они не сработают. Делает ли установка границы ваш код ломаться. Идя другим путем, вы можете написать тривиальную программу, которая демонстрирует проблему.

Я нашел большой успех и контроль с помощью TableLayout и я бы порекомендовал это всем. Вы можете определить столбцы и строки, используя определенное количество пикселей, или вы можете просто использовать TableLayout.PREFERRED для каждого столбца и / или строки. Очень красивый и гибкий макет. Мы используем его везде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top