4

以下内容接近我想要的,并且符合我的期望:

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");

IE。将跨度组件更改为在 x 和 y 中增长,标签 1 单元格在 x 中增长,即使它不应该。

有谁知道我可以解决这个问题的方法吗?

4

2 回答 2

3

找到了一种解决方法,但并不完全令人满意。根据这个论坛帖子这个论坛帖子,MigLayout 从计算组件大小切换到计算涉及跨度的列大小。在布局约束中用“filly”替换“fill”,然后为应该允许增长的每一列添加带有“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);
    }
}
于 2009-07-21T14:11:34.473 回答
1

您也可以尝试我的MatrixLayout布局管理器作为替代方案。这个概念类似于 MiG 布局 - 基于表格。它没有那么强大,但它似乎(对我来说,无论如何)使用起来更简单(强大的力量带来了巨大的复杂性)。但是,老实说,这可能只是因为我没有努力理解 MiG Layout。

于 2009-08-21T06:12:32.427 回答