2011-11-14 6 views
0

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

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

Приложение использует Griffon в качестве фреймворка, а MigLayout - как диспетчер компоновки, и я думаю, что у меня есть большая часть его, но я не могу понять, как получить поведение роста, требуемое спецификациями.

Вот мнение, что я работаю с:

application(title: 'MyApp', 
     preferredSize: [320, 240], 
     pack: true, 
     locationByPlatform: true, 
     iconImage: imageIcon('/griffon-icon-48x48.png').image, 
     iconImages: [imageIcon('/griffon-icon-48x48.png').image, 
       imageIcon('/griffon-icon-32x32.png').image, 
       imageIcon('/griffon-icon-16x16.png').image]) { 
    panel(layout: new MigLayout()) { 
     label 'Root Directory:', constraints: 'split, span' 
     textField text: 'Put RootDir here', constraints: 'growx' 
     button 'Dialog', constraints: 'wrap' 

     label 'To be Processed:' 
     button 'Go button', constraints: 'spany 3' 
     label 'Processed:', constraints: 'wrap' 

     scrollPane(constraints: 'center, grow') { 
      list listData: (1..20).collect { "Very Long Line $it" } 
     } 
     scrollPane(constraints: 'center, grow, wrap') { 
      list listData: (1..5).collect { "Line $it" } 
     } 

     label 'info about files' 
     label 'info about files', constraints: 'wrap' 

     progressBar constraints: 'span, growx, wrap' 
     progressBar constraints: 'span, growx' 
    } 
} 

Когда я перетащить окно больше, текстовое поле в верхней части и два бара прогресса в нижней части должны растягиваться, чтобы заполнить пространство горизонтально, и оба списка должны растягиваться в обоих направлениях. Остальные размеры элементов должны оставаться неизменными.

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

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

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

Итак, какую ключевую вещь мне не хватает? Я уверен, что это небольшой элемент, но как бы я ни старался, я не могу заставить вещи расти правильно. Любые help очень оценен.

ответ

4

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

изменение Try:

panel(layout: new MigLayout()) { 

в

panel(layout: new MigLayout('fill')) { 
+0

Хорошего вопроса об использовании «заливки», а не «fillx». Я заметил только «growx», и я не заметил «роста» на двух сколпанах. –

1

Попробуйте

panel(layout: new MigLayout(**"fillx"**)) { 
2

Как и другие отметили, вы должны установить соответствующие ограничения макета при инстанцировании MigLayout. Если у вас есть miglayout plugin, то код может быть сокращен до следующего

application(title: ...) { 
    migLayout layoutConstraints: 'fill' 
    label 'Root Directory:', constraints: 'split, span' 
    ... 
} 
Смежные вопросы