Предложения по компоновке для GUI? - PullRequest
4 голосов
/ 30 ноября 2011

Итак, я хочу сделать новый JList и новый JPanel внизу, но я не слишком знаком с BoxLayout, FlowLayout и тому подобным. Что вы предлагаете, чтобы я мог превратить мой графический интерфейс в нечто вроде этого:

I drew this on Paint, excuse my drawing.

Извините за мой рисунок и спасибо всем, кто может помочь! :)

Редактировать: Что это делает? JPanel.setLayout (новый BoxLayout (JPanel, BoxLayout.PAGE_AXIS));

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Использование MigLayout . Он очень прост в использовании и имеет очень маленькую кривую обучения. Он может легко обрабатывать макет, который вы собираетесь. В частности, начните с Краткое руководство по началу работы , а затем Whitepaper для остальной части API)

Особые элементы, на которые нужно смотреть с помощью MigLayout, - это закрепленные элементы (справа и снизу, похоже) и fill, так как похоже, что вы хотите, чтобы вещи занимали все пространство.

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

Например, используя MigLayout и SwingBuilder в фреймворке Griffon , вот как я бы изложил то, что у вас есть:

migLayout(layoutConstraints: 'fill, wrap 2', 
    columnConstraints: '[grow|]', 
    rowConstraints: '[grow|]')

panel (constraints: 'spany 2, grow') { 
    // Main content with the picture go in here 
}
list(constraints: 'grow') { 
    // Top list 
}
list(constraints: 'grow') { 
    // Bottom list 
}

panel(constraints: 'grow') { 
    // Bottom panel 
}
panel() { 
    // Button panel 
}

Вероятно, есть много лучших способов сделать это, и я не собрал макет и не запустил его сам, поэтому я не уверен на 100%, что он работает, но он должен послужить хорошей отправной точкой.

0 голосов
/ 30 ноября 2011

DE Либо используйте GridBadLayout, либо используйте вложенные панели с BorderLayout.Вам нужно иметь несколько уровней контейнеров JPanel, которые определяют макет, а затем добавить к ним функциональные компоненты.

Для вашего примера я бы начал с панели в центре (панель A) и панели навосточная граница (Панель Б).затем используйте BoxLayout для панели B и добавьте JList, JButton, JLabel и Jlists, а также кнопки удаления тега.

Для панели A добавьте еще одну панель контейнера на южной границе (Панель C), еще один в центре (Панель D) и еще один на восточной границе (Панель E).Добавьте два новых списка на Panel E с помощью boxlayout и рис. На Panel C.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...