0

私はプロジェクトを再開できることを期待して、予定より遅れているデスクトップ アプリケーション プロジェクトに放り込まれましたが、悲しいかな、私はデスクトップ アプリケーション開発の経験がほとんどありません。

私の前任者は自分が何をしているかを知っているようでしたが、何も完成させることができなかったので、私は混乱を修復してプロジェクトを戸外に出そうとしています.

このアプリケーションは 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'
    }
}

ウィンドウを大きくドラッグすると、上部のテキスト フィールドと下部の 2 つのプログレス バーが横方向にスペースを埋めるように伸び、2 つのリストが両方向に伸びます。残りの要素のサイズは同じままにする必要があります。

何をしようとしてcolumnsも、プロパティを非常に大きく設定した場合にのみ、上部のテキスト ボックスを伸ばすことができます。

リストも垂直方向にはまったく成長しません。私が得ることができた最善の方法は、右のリストを未知のサイズに成長させ、次に左のリストを成長させることです。

進行状況バーは、含まれているパネルと同じくらい大きくなります。これは、含まれているパネルをウィンドウ全体に表示できれば問題ありません。

それで、私が欠けている重要な部分は何ですか?小さな要素だとは思いますが、どんなに頑張っても、物事を正しく成長させることはできないようです。どんな助けでも大歓迎です。

4

3 に答える 3

4

問題は、ルートパネルのサイズが変更されていないため、そのパネルの内部要素のサイズを変更する必要がないことだと思います。

変更してみてください:

panel(layout: new MigLayout()) {

panel(layout: new MigLayout('fill')) {
于 2011-11-15T10:16:34.977 に答える
2

他の人がコメントしているように、MigLayout をインスタンス化するときに適切なレイアウト制約を設定する必要があります。milayout プラグインがある場合、コードは次のように短縮できます。

application(title: ...) {
    migLayout layoutConstraints: 'fill'
    label 'Root Directory:', constraints: 'split, span'
    ...
}
于 2011-11-29T21:51:17.393 に答える
1

試す

panel(layout: new MigLayout(**"fillx"**)) {
于 2011-11-15T10:10:43.843 に答える