2012-06-04 2 views
2

Я пытаюсь создать сетку 2x2 из 4 кнопок для программы членства, которую я разрабатываю. Проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, что я делаю, она просто отображается как сетка 1x4. Код выглядит следующим образом.Проблемы с GridLayout не работают

private void buildStartupPanel() 
{ 
    startup = new JPanel(); 
    startup.setLayout(new GridLayout(2,2)); 
    addMember = new JButton ("Add a new member"); 
    removeMember = new JButton ("remove Member"); 
    reviewMember = new JButton ("Review a Member"); 
    reviewAll = new JButton ("Review All Members"); 
    startup.add(addMember); 
    startup.add(removeMember); 
    startup.add(reviewMember); 
    startup.add(reviewAll); 
    addMember.addActionListener(this); 
    removeMember.addActionListener(this); 
    reviewMember.addActionListener(this); 
    reviewAll.addActionListener(this); 
} 

Когда я выходной результат, он показывает следующее

Добавить новый член

Удалить Участник

Обзор A Член

Обзор всех Пользователи

Вместо от

Добавить новый член удалить члена

Обзорной Обзор Участник всех членов

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

+0

Эта ссылка поможет с заполнением по крайней мере: http://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html См. Второй сегмент кода. –

+0

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

ответ

4

Использовать 3-й & 4-й int конструктору для интервалов. В противном случае, кажется, работает очень хорошо здесь:

Startup Pane

import java.awt.GridLayout; 
import javax.swing.*; 

public class StartupPanel { 

    private JComponent getStartupPanel() 
    { 
     JPanel startup = new JPanel(); 
     startup.setLayout(new GridLayout(2,2,50,5)); 
     JButton addMember = new JButton("Add a new member"); 
     JButton removeMember = new JButton("remove Member"); 
     JButton reviewMember = new JButton("Review a Member"); 
     JButton reviewAll = new JButton("Review All Members"); 
     startup.add(addMember); 
     startup.add(removeMember); 
     startup.add(reviewMember); 
     startup.add(reviewAll); 

     return startup; 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       StartupPanel sp = new StartupPanel(); 
       JOptionPane.showMessageDialog(null, sp.getStartupPanel()); 
      } 
     }); 
    } 
} 
+2

+1: Одно критическое различие: 'JOptionPane' вызывает' pack() '; Код OP не может. – trashgod

+0

@trashgod 1) Пока мы не увидим SSCCE, мы не можем быть уверены в том, что делает код OP - он может вызвать 'pack()' сразу после добавления построенной панели. 2) Я попробовал это быстро в рамке с установленным размером, но без пакета. Тот же эффект 2x2. - Сказав это, я не могу для жизни меня понять, почему OP видит один столбец из четырех кнопок. –

+0

Вы правы насчет SSCCE; Я предполагал, что видимая «сетка 1x4» может отражать (по умолчанию) «FlowLayout» из JPanel. – trashgod

2

спасибо за ответы !! Приходите, чтобы узнать, что моя вторая панель, которую я добавляла к коду, была написана с ошибкой (woops) и выбросила все. Полагаю, что это важно для публикации полного SSCCE. По крайней мере, я научился делать интервалы! Спасибо всем!

+1

Извините, что не принял ответ до Андрея. Я новичок в мире разработки приложений и даже новичок в StackOverflow. Я принял ваш ответ. спасибо за помощь –

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