2014-09-09 4 views
2

Я новичок здесь, так что легко на меня. Я изучил всю документацию по miglayout (что довольно неплохо), но я не могу правильно отобразить нужную сетку.Miglayout сетка ограничений пользовательский макет

мне нужно параметры MigLayout() для установки сетки как:

2 строк, в том, что нижняя строка разделена пополам (или, если вы: 1 верхний ряд, примыкающий к нижней 2 колонки). В верхней строке будет отображаться текстовое поле поиска с помощью кнопки соприкосновения. В нижнем левом столбце будут отображаться 3 кнопки, уложенные друг на друга. В нижнем правом столбце будет отображаться метка изображения.

Вот код, чтобы начать с:

//main window panel setup 
      JPanel mainPanel = new JPanel(); 
      mainWindow.add(mainPanel); 
      mainPanel.setLayout(new MigLayout("")); 

      //components insertion into panel (using MigLayout constraints) 
      mainPanel.add(searchText); 
      mainPanel.add(searchBtn, "wrap"); 
      mainPanel.add(addBtn); 
      mainPanel.add(logoImage, "spany 3 , wrap"); 
      mainPanel.add(randomBtn, "wrap"); 
      mainPanel.add(getFileBtn); 

(не может загрузить изображение)

С помощью этого кода Обратите внимание, что логотип держится ниже кнопку Поиск (я думаю, что он делает это из-за макет по умолчанию установлен как сетка), но я хочу, чтобы он соответствовал смежно-правому значению кнопок и под текстовым полем/searchButton.

+0

oh все программирующие гении, пожалуйста, помогите – noBrainer

+0

специальные крикнуть mikael griev (?) Для создания MigLayout – noBrainer

+1

+1 для фрагмента кода, показывающего ваши усилия, но в следующий раз подумайте над добавлением [Минимальный, полный и проверенный пример] (http : //stackoverflow.com/help/mcve). Это упростит проверку того, что вы пробовали. – dic19

ответ

6

Прежде всего, я бы сказал, что вы довольно близки, и вам нужно играть только с количеством и ограничениями столбцов (плюс некоторые недостающие ограничения компонентов). Это может быть сделано при создании экземпляра макета:

MigLayout layout = new MigLayout("debug, fillx", "[][grow][]"); 

Примечания debug и fillx являются макет ограничения, предназначенным для включения отладки функции и заполнить всю ширину, соответственно. См. this answer для более подробной информации.

Теперь вы можете подумать, что вам нужны два столбца, но вам действительно нужны три столбца, чтобы развернуть средний, в то время как первый и последний столбцы продолжают занимать минимально возможную ширину. Это то, что означает [][grow][].

Пожалуйста, обратите внимание этот фрагмент:

MigLayout layout = new MigLayout("debug, fillx", "[][grow][]"); 
JPanel content = new JPanel(layout); 
// First row   
content.add(new JTextField(20), "spanx 2, growx"); // search text field 
content.add(new JButton("Search"), "wrap"); 
// Second row 
content.add(new JButton("Button # 1"), "growx"); 
content.add(new JLabel("Image here"), "span 2 3, grow, wrap"); // image label 
content.add(new JButton("Button # 2"), "growx, wrap"); 
content.add(new JButton("Button # 3"), "growx, wrap"); 

Это будет производить что-то вроде этого:

Custom layout example

Обратите внимание, что на горизонтальном изменении размера и поиск текстового поля и изображение этикетка будет занимать максимум доступного ширина, в то время как кнопка поиска и стек кнопки будут занимать только минимально возможную ширину.

+0

Спасибо большое dic19, это действительно помогло. – noBrainer

+2

Добро пожаловать :) Если этот ответ достаточно хорош для вас, тогда подставьте [принять его] (http://stackoverflow.com/help/accepted-answer). @noBrainer – dic19

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