2013-08-03 3 views
1

Поэтому я хочу, чтобы кнопка Select была выше кнопки Back, и я не хочу, чтобы они перекрывали друг друга. Но когда я устанавливаю их как PAGE_END, они перекрываются. Как мне обойти это?Как разместить два JButtons на PAGE_END с BorderLayout без их перекрытия?

Вот код задачи:

public void methodName() { 
    JPanel controls = new JPanel(new BorderLayout(5,5)); 
    final CardLayout cl = new CardLayout(); 
    final JPanel panel = new JPanel(cl); 
    controls.add(panel); 
    this.getContentPane().setLayout(new FlowLayout(FlowLayout.LEADING));   
    list = new JList<Object>(objectName); 
     list.setVisibleRowCount(7); 
     select = new JButton("Select"); 
     back = new JButton("Back"); 
     select.addActionListener(this); 
     controls.add(new JScrollPane(list)); 
     controls.add(select, BorderLayout.PAGE_END); 
     controls.add(back, BorderLayout.PAGE_END); 
     controls.setBorder(new EmptyBorder(25,25,0,0)); 
     add(controls); 
     refreshFrame(); 
} 

Вот как это выглядит, когда они оба добавляют, но накладываются друг на друга:

The problem (Overlapping)

Это то, что я хочу на вид:

This is what it should look like

Любые идеи?

Заранее благодарен!

ответ

3

Поместите 2 JButtons на новом JPanel используя GridLayout как этот

JPanel basePanel = new JPanel(new GridLayout(0, 1, 0, 3)); 
basePanel.add(select); 
basePanel.add(back); 
controls.add(basePanel, BorderLayout.PAGE_END); 

GridLayout может обеспечить вертикальный зазор между кнопками в его constructor, как показано на ваш вопрос

+0

Используйте это вместо 'BorderLayout'? – knorberg

+2

Не использовать это в сочетании с 'BorderLayout' ... – Reimeus

+0

Спасибо человеку! Это сработало отлично! – knorberg

2

создать новый JPanel с GridLayout (2,1), затем добавьте две кнопки в jpanel, затем добавьте Jpanel в Jframe.