题
以下是近的我想要什么,并且我期望:
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,即使它不应该。
没有人知道一种方式我可以获得这一轮?
解决方案
找到一个解决办法,虽然不完全令人满意。根据 这个论坛后 和 这个论坛后,MigLayout开关计算分大小,计算所列大小在一个跨度的参与。替换"填满"与"小姑娘"的约束的布局,然后加入列约束的"成长"为每一列应该允许增长似乎解决它。
工作code:
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);
}
}
其他提示
您也可以尝试我的 MatrixLayout 布局管理器作为替代。这个概念是类似米格布局 - 表为主。这不是那么强大,但它似乎(对我来说,反正)更易于使用(以极大的力量来自伟大的复杂性)。但是,说实话,这可能只是因为我还没有试过不难理解米格布局。
不隶属于 StackOverflow