2017-01-03 14 views
0

Я полностью потерял, для каких макетов я должен использовать для создания графического интерфейса, который я хочу для своей программы.Какие макеты мне использовать для получения GUI, который я хочу?

С левой стороны, я хотел бы, чтобы моя панель имела три кнопки в ней, спускаясь по вертикали. С правой стороны у меня будет другая панель, которая будет моей главной панелью, где отображается вся информация, в зависимости от того, какая кнопка нажата.

Я буквально понятия не имею, какие макеты я должен использовать, и я полностью озадачен о том, как я получу свой GUI, чтобы выглядеть следующим образом: enter image description here

Вот мой код на данный момент:

 public void addComponentsToPane(Container pane) { 

     JPanel innerPane = new JPanel(); 
     JPanel outerPane = new JPanel(); 
     outerPane.setBackground(Color.yellow); 

     pane.setLayout(new GridBagLayout()); 

     JButton btnAdd = new JButton("Add"); 
     JButton btnEdit = new JButton("Edit"); 
     JButton btnMovements = new JButton("Movements"); 

     innerPane.add(btnAdd, BorderLayout.NORTH); 
     innerPane.add(btnEdit, BorderLayout.CENTER); 
     innerPane.add(btnMovements, BorderLayout.SOUTH); 

     pane.setLayout(new GridLayout(1,2)); 
     pane.add(innerPane); 
     pane.add(outerPane); 
    } 

Который возвращает это:

enter image description here

Как вы можете видеть, это не выглядит, как я хочу, чтобы это было и я не знаю, что делать.

Мои кнопки неправильные, и я, возможно, приближаюсь к этому неправильно.

Вопрос в том, как я могу подойти к этой проблеме правильным образом, поскольку я могу создать графический интерфейс с правильными макетами и заставить его выглядеть как первый снимок?

спасибо.

+0

Прокси-сервер на работе блокирует изображения, поэтому я не вижу точно, что вы хотите. Однако вы можете добиться хороших результатов, вложив в Swing различные менеджеры макетов.Я бы рассмотрел использование GridLayout для кнопок, вложенных в панель с BorderLayout, с панелью, содержащей кнопки, добавленные в NORTH, и пустую метку, добавленную в CENTER, чтобы заняться оставшимся пространством. Затем добавьте это на другую панель, используя BorderLayout (WEST), с вашей внешней панелью в CENTER. –

ответ

1

Область содержимого JFrame по умолчанию использует BorderLayout. Я бы сохранил этот макет.

Затем вы создаете «левую» панель и добавляете ее в BorderLayout.LINE_START. Эта область будет содержать ваши кнопки. Затем вы можете настроить диспетчер компоновки этой панели на GridBagLayout. Создайте вторую панель, используя GridLayout, с компонентами, выровненными по вертикали. Добавьте кнопку на эту панель. Добавить эту панель в «левой» панели с помощью:

leftPanel.add(buttonPanel, new GridBagConstraints); 

Затем создайте еще одну панель и добавить его в BorderLayout.CENTER. Это ваша цветная панель.

Так основная логика:

JPanel buttonPanel = new JPanel(new GridLayout(...)); 
buttonPanel.add(...); 

JPanel leftPanel = new JPanel(new GridBagLayout()); 
leftPanel.add(buttonPanel, new GridBagConstraints()); 

JPanel centerPanel = new JPanel(); 
center.setBackground(Color.YELLOW); 

frame.add(leftPanel, BorderLayout.PAGE_START); 
frame.add(centerPanel, BorderLayout.CENTER); 

Если вы хотите, чтобы ваши кнопки, чтобы быть больше, чем по умолчанию, то вы могли бы сделать что-то вроде:

button.setMargin(new Insets(20, 20, 20, 20)); 

Читать Свинг учебник по Layout Managers более информацию и примеры каждого менеджера макетов.

Если вам нужно дополнительное пространство на панели, содержащей кнопки, вам необходимо использовать EmptyBorder. Учебник Swing также содержит раздел о How to Use Borders, который вы можете прочитать для рабочих примеров.

Экспериментируйте и научитесь гнездовать панели, чтобы получить желаемый эффект.