2012-03-18 2 views
0

У меня есть массив с кнопками:не отображаются все кнопки

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); 
    } 
+0

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). BTW - вы считали, что используете кнопки JToolBar для кнопок? –

ответ

1

Установить диспетчер FlowLayout на westPanel JPanel, и все они появятся.

1

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

Быстрое исправление определяют расположение потока:

pannel.setLayout(new FlowLayout());

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

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

+1

* «Вы не задали макет, поэтому по умолчанию используется BorderLayout». * Не для панели. –

1

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

setLayout(null); //gives no layout manager 

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

+0

технически правильно, но нет-нет-никогда не делать ;-) пожалуйста, не распространяйте плохие и (в конечном счете) привычки к обратному обходу – kleopatra

+0

Я принимаю, что вы всегда должны стараться не делать этого, но иногда единственный способ добиться чего вы пытаетесь сделать это так. Анимированное движение, например. –

+0

эти контексты чрезвычайно редко (и даже тогда высокоспециализированный LayoutManager может быть лучшим решением, поиск f.i. для DragLayout :-), этот вопрос не имеет ни малейшего признака того, что это может быть один из них. – kleopatra

Смежные вопросы