我使用MigLayout的方式如下
panel.setLayout(new MigLayout("",
"[][600!][]",
"[][][][][][][][][]"));
panel.add(composerTitle);
panel.add(composerText, "wmax 600");
panel.add(lblCount, "push, align right, wrap");
panel.add(costTitle);
panel.add(costText, "wrap,wmax 600");
panel.add(titleTitle);
panel.add(titleText, "wrap,wmax 600");
panel.add(publisherTitle);
panel.add(publisherText, "wrap,wmax 600");
panel.add(scoreinfoTitle);
panel.add(scoreinfoText, "wrap,wmax 600");
panel.add(languageTitle);
panel.add(languageText, "wrap,wmax 600");
panel.add(collectionTitle);
panel.add(collectionText, "wrap,wmax 600");
panel.add(numbersTitle);
panel.add(numbers, "grow, span 2, wrap");//JTextArea that uses line wrap
panel.add(contentTitle);
panel.add(content, "grow, span 2, wrap");//JTextArea有时我的标签可能会超过600!为列添加的约束。因此,我期望标签永远不会超过600,因为最大值设置为600。但是,如果标签有足够的文本,它就会这样做。因此,我不得不将约束添加到每一个"wmax 600“。没有这个约束,我的标签就会离开这个框架。
有没有办法做到这一点,所以我不需要添加"wmax 600“到每个标签,我添加。它似乎挫败了600人的目的!列的约束。
发布于 2014-01-09 13:45:09
MigLayout的基本性状:
与minSize的标签相结合,该标签的prefSize仅略小于其prefSize,这将导致组件尺寸过大(又名:>单元格宽度)。为了至少将组件约束与列约束解耦(也就是说,当后者更改时不必更改所有前者),您可以使用wmin:
JPanel panel = new JPanel();
panel.setLayout(new MigLayout("wrap 3, debug",
"[][300!][]"));
panel.add(new JLabel("first, normal: "));
panel.add(new JLabel("and here we want something reaaly long"
+ "and here we want something reaaly long")
, "wmin 0"
);
panel.add(new JLabel("10"));
panel.add(new JLabel("second: "));
panel.add(new JLabel("another"));或者(如果应用程序中有许多这样的布局),子类JLabel和重写getMinPreferredSize返回(0,minHeight)。虽然有点脏,但是min可以说对JLabel没有太大意义:毕竟,在默认情况下,它已经可以通过显示省略号来处理它了,您可能会进一步增强子类以显示完整文本的工具提示。
https://stackoverflow.com/questions/21004989
复制相似问题