Swing コンポーネントのサイズ変更時の動作を適切に設定するのに苦労しています。
そのインターフェースには2つの問題があります。
A: 各行の先頭にあるトグル ボタンは、テキストを折りたたむ/展開するためのものです。すべての要素は JLayeredPane に含まれています。ボタンをクリックすると、ペインの高さを編集してコンテンツを展開または折りたたむ (31 または 310)。Expand
正常に動作し、以下の要素をプッシュします。一方、collapse
テキストを非表示にしますが、すべての要素を所定の位置に残します。これが私のコードです:
private void expandText(java.awt.event.ActionEvent evt) {
JToggleButton button = (JToggleButton) evt.getSource();
Container parent = button.getParent();
Dimension size = parent.getSize();
String icon;
if (button.isSelected()) {
size.height = 310;
icon = "/org/cytoscape/ocsana/resources/images/minus.png";
} else {
size.height = 31;
icon = "/org/cytoscape/ocsana/resources/images/plus.png";
}
parent.setSize(size);
try {
button.setIcon(new ImageIcon(ImageIO.read(getClass().getResource(icon)).getScaledInstance(-1, 15, Image.SCALE_SMOOTH)));
} catch (IOException ex) {
}
backgroundPane.revalidate();
backgroundPane.repaint();
}
B: 上のスクリーンショットはウィンドウの最小サイズです。ウィンドウを水平方向にサイズ変更すると、内側のペインはmin + (frame.width - min) / 2
、右スクロールバーがフレームの右側にくっつかないことを意味する値にのみサイズ変更されます。
以下の両方の問題のデモンストレーションを参照してください。