2009-07-21 24 views
4

は、私が欲しいものに近い、と私は何を期待します:MigLayoutのSpan/Growバグ?次

import javax.swing.JComboBox; 
import javax.swing.JPanel; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 

import net.miginfocom.swing.MigLayout; 

public class MigBug extends JFrame { 

    public static void main(String args[]) { 
     MigBug migbug = new MigBug(); 
     migbug.pack(); 
     migbug.setVisible(true); 
    } 

    public MigBug() { 
     JPanel content = new JPanel(); 
     content.setLayout(new MigLayout("fill, debug")); 

     content.add(new JLabel("Label 1")); 
     content.add(new JComboBox()); 

     content.add(new JLabel("Label 2")); 
     content.add(new JTextField(25), "growx, wrap"); 

     content.add(new JLabel("BIG"), "span, w :400:, h :200:, growy"); 

     setContentPane(content); 
    } 
} 

しかし、私は次のように変更します場合:

content.add(new JLabel("BIG"), "span, w :400:, h :200:, grow"); 

すなわち。スパンしたコンポーネントをxとyの両方で拡大するように変更すると、ラベル1のセルはxで拡大します。

誰かがこれを取得する方法を知っていますか?

答えて

3

完全に満足できるわけではありませんが、回避策が見つかりました。 this forum postthis forum postによれば、MigLayoutはコンポーネントサイズの計算から、スパンが関係するカラムサイズの計算に切り替わります。レイアウト制約で "fill"を "filly"に置き換え、次に拡大させるべき各列に対して "grow"という列制約を追加すると、それを修正するように見えます。

の作業コード:

import javax.swing.JComboBox; 
import javax.swing.JPanel; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTextField; 

import net.miginfocom.swing.MigLayout; 

public class MigBug extends JFrame { 

    public static void main(String args[]) { 
     MigBug migbug = new MigBug(); 
     migbug.pack(); 
     migbug.setVisible(true); 
    } 

    public MigBug() { 
     JPanel content = new JPanel(); 
     content.setLayout(new MigLayout("filly, debug", "[][grow][][grow]")); 

     content.add(new JLabel("Label 1")); 
     content.add(new JComboBox()); 

     content.add(new JLabel("Label 2")); 
     content.add(new JTextField(25), "growx, wrap"); 

     content.add(new JLabel("BIG"), "span, w :400:, h :200:, grow"); 

     setContentPane(content); 
    } 
} 
1

また、代替として私MatrixLayoutレイアウトマネージャを試みることができます。このコンセプトは、MiGレイアウト - テーブルベースと同様です。それは強力ではありませんが、(私にとっては、とにかく)使用するほうがはるかに簡単です(大きな力が非常に複雑になります)。しかし、正直言って、それはちょうど私がMiG Layoutを理解しようとしなかったからかもしれません。

関連する問題