私はGroupLayout
を使用して、動的に生成されたデータ入力フォームのコンポーネントを管理しています。レイアウトは多かれ少なかれそうです:Swing GroupLayout:コンポーネントサイズのサイズ変更と制限
私は水平レイアウトに2つの並列グループを使い、垂直レイアウトには1つの連続グループを使用しています。ほとんどの場合、すべてがうまくいきます。
ラベルの幅の最大値(JLabel
のインスタンスのみ)を親の幅の1/3に制限したいJFrame
。 JFrame
が固定サイズの場合、これは簡単なことですが、サイズを変更する必要があります。
私はJFrame
からComponentListener.componentResized()
イベントを受け取っていますが、このようなイベントを受信すると、何をするのかちょっとわかりません。
私は運なしでこのアプローチを試してみた:
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());
}
誰でも動作するラベルの幅を制限する方法を提案することはできますか?
私はたぶんレイアウトを最初から作り直すことができましたが、もっと簡単な方法であるはずです。
これまでsetXXSizeません。http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumsize-methods-in-java-swi – kleopatra
ラベルが最も大きなラベルの好ましいサイズより大きくなる理由はありますか? – trashgod
@trashgodいいえありません。私はラベルの幅に上限を設定したい、最小の境界ではない。それをより明確にするために質問を編集しました。 – vaughandroid