Eri*_*ric 3 java swing miglayout layout-manager
我用以下方式使用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
Run Code Online (Sandbox Code Playgroud)
有时我的标签可能超过600!我为列添加了约束.因此,我预计标签永远不会超过600,因为max设置为600.但是,如果标签有足够的文本,它就是这样做的.因此,我不得不为每个"wmax 600"添加约束.没有这个限制,我的标签正在运行框架.
有没有办法做到这一点,所以我不必为我添加的每个标签添加"wmax 600".这似乎打败了600的目的!列的约束.
MigLayout的基本特征:
那些结合了标签的minSize只比它的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"));
Run Code Online (Sandbox Code Playgroud)
或者(如果您的应用程序中有许多此类布局),则继承JLabel并覆盖getMinPreferredSize以返回(0,minHeight).稍微有些脏,但是对于JLabel来说可能没有多大意义:毕竟默认情况下,它已经可以通过显示省略号来处理它,您可以进一步增强子类以显示带有完整文本的工具提示.