не отображаются все кнопки - PullRequest
0 голосов
/ 18 марта 2012

У меня есть массив с кнопками:

JButton[] commandButtons = {
    new JButton("Add Chair"),
    new JButton("Add Table"),
    new JButton("Add Desk"),
    new JButton("Clear All"),
    new JButton("Total Price"),
    new JButton("Save"),
    new JButton("Load"),
    new JButton("Summary")
        };

Я хочу поместить их все в панель, но она отображает только последнюю кнопку. так что, если кто-нибудь знает, как это исправить или у вас есть совет, было бы здорово.

Также я не уверен, как сделать цикл for для каждого.

for(int i=0; i<commandButtons.length; i++)      
    {
    westPanel.add(commandButtons[i]);
        commandButtons[i].addActionListener(this);
    }

Ответы [ 3 ]

1 голос
/ 18 марта 2012

Я считаю, что вы не установили макет, поэтому по умолчанию используется BorderLayout.Когда вы добавляете элементы в этот макет без указания параметра (куда поместить элемент), он добавляется по умолчанию в центр.Но в центре может быть только один элемент, поэтому вы видите только последнюю кнопку.

Быстрое исправление - определение структуры потока:

pannel.setLayout(new FlowLayout());

Сделайте это перед добавлением кнопок.Теперь вы увидите все кнопки.Если вы не видите, увеличьте окно.

Теперь, если макет не тот, который вам действительно нужен, прочитайте о макетах и ​​решите, какой из них (или их комбинация) вам нужен.

1 голос
/ 18 марта 2012

Да, это зависит от менеджера макета.Если вам не нужен менеджер макетов, вы должны сами установить местоположение и размер, иначе все они будут равны 0,0.

setLayout(null); //gives no layout manager

Всегда старайтесь использовать менеджер макетов.

1 голос
/ 18 марта 2012

Установите диспетчер FlowLayout на JPP-панели westPanel, и они все появятся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...