SpringLayoutの使用
Total: 12118
, Today: 1
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
SpringLayout
を使用して、各ラベルのサイズとパネルからの距離が一定の比率になるような配置を指定します。
Screenshot
Advertisement
サンプルコード
private static void setScaleAndAdd(
JComponent parent, SpringLayout layout, JComponent child,
float sx, float sy, float sw, float sh) {
Spring panelw = layout.getConstraint(SpringLayout.WIDTH, parent);
Spring panelh = layout.getConstraint(SpringLayout.HEIGHT, parent);
SpringLayout.Constraints c = layout.getConstraints(child);
c.setX(Spring.scale(panelw, sx));
c.setY(Spring.scale(panelh, sy));
c.setWidth(Spring.scale(panelw, sw));
c.setHeight(Spring.scale(panelh, sh));
parent.add(child);
}
// public void initLayout() {
// SpringLayout layout = new SpringLayout();
// Insets i = panel.getInsets();
// int w = panel.getWidth() - i.left - i.right;
// int h = panel.getHeight() - i.top - i.bottom;
//
// l1.setPreferredSize(new Dimension(w * 90 / 100, h * 55 / 100));
// l2.setPreferredSize(new Dimension(w * 40 / 100, h * 30 / 100));
//
// layout.putConstraint(SpringLayout.WEST, l1, w * 5 / 100,
// SpringLayout.WEST, panel);
// layout.putConstraint(SpringLayout.NORTH, l1, h * 5 / 100,
// SpringLayout.NORTH, panel);
// layout.putConstraint(SpringLayout.WEST, l2, w * 50 / 100,
// SpringLayout.WEST, panel);
// //layout.putConstraint(SpringLayout.WEST, l2, 0, SpringLayout.WEST, l1);
// layout.putConstraint(SpringLayout.SOUTH, l2, -h * 5 / 100,
// SpringLayout.SOUTH, panel);
//
// panel.setLayout(layout);
// panel.revalidate();
// }
View in GitHub: Java, Kotlin解説
上記のサンプルでは、SpringLayout
を使って2
つのJComponent
をパネル内にレイアウトしています。
パネルのサイズが変更されるたびに、各ラベルのサイズとパネルからの距離が一定の割合になるように設定し直しています(ただしパネルの余白は無視)。
JLabel
- 幅はパネルの
90%
、高さは55%
になるよう設定 - 左上座標は親パネルの左上から
x: 5%
、y: 5%
の位置 パネルと自身のWEST
からの距離5%
、パネルと自身のNORTH
からの距離5%
- 幅はパネルの
JButton
- 幅はパネルの
40%
、高さは30%
になるよう設定 - 左上座標は、親パネルの左上から
x: 50%
、y: 65%
の位置 パネルと自身のWEST
からの距離50%
、パネルと自身のSOUTH
からの距離-5%
- 幅はパネルの