GroupLayout
動的に生成されたデータ入力フォームのコンポーネントを管理するために使用しています。レイアウトは多かれ少なかれ次のようになります。
*-----------------------------------------------*
| label A | field A |
| label B | field B |
| label C | field C |
*-----------------------------------------------*
水平レイアウトに2つの並列グループを使用し、垂直レイアウトに1つの順次グループを使用しています。ほとんどの場合、すべてが正常に機能しています。
JLabel
ラベル(の単なるインスタンス)の最大幅を親の幅の1/3に制限したいと思いますJFrame
。が固定サイズの場合、JFrame
これは簡単ですが、サイズ変更に対処する必要があります。
私はComponentListener.componentResized()
イベントをピックアップしていますが、JFrame
そのようなイベントを受け取ったらどうするかについて少し行き詰まっています。
私は運がなくてもこのアプローチを試しました:
public void componentResized(ComponentEvent e) {
int maxW = parentFrame.getWidth() / 3;
for (JLabel l : labels) {
l.setMaximumSize( // have also tried setSize() and setPreferredSize()
new Dimension(
Math.min(l.getSize().width, maxW),
l.getMaximumSize().height));
}
groupLayout.invalidateLayout(getContentSpace());
}
誰かが機能するラベルの幅を制限する方法を提案できますか?
毎回レイアウトを一から作り直すこともできるかもしれませんが、もっと簡単な方法があるはずだと思います。