import java.awt.*;
import javax.swing.*;
class SimpleNestedLayout {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
JPanel gui = new JPanel(new BorderLayout(5,5));
int sz = 4;
Container content = new JPanel(new GridLayout(sz, 0, 2, 2));
for (int f=0; f<sz*sz; f++) {
content.add(new JButton());
}
gui.add(content, BorderLayout.CENTER);
Container info = new JPanel(
new FlowLayout(FlowLayout.CENTER, 50, 5));
info.add(new JLabel("Flow"));
info.add(new JLabel("Layout"));
gui.add(info, BorderLayout.PAGE_START);
gui.add(new JLabel("Label"), BorderLayout.LINE_END);
JOptionPane.showMessageDialog(null, gui);
}
};
SwingUtilities.invokeLater(r);
}
}
ノート
- 8x8グリッドの場合は、8に変更
sz
します。
- 言及されている「ラベル」がGUIに表示されるラベルのようなものである場合、それは外側の
BorderLayout
場所Flow
Layout
(それ自体がパネル)に配置されるか、最も外側のパネル Label
の他の2つの空の位置のいずれかに表示される可能性があります。gui
info
(FlowLayout
)とcontent
( )の両方のGridLayout
パネルは、必要に応じてより多くのコンポーネントを受け入れることもできます。
- 他のネストされたレイアウトの簡単な例。
PlayerGui
(31 LOC)
WestPanel
(30 LOC)単にインスタンスを保持するのではなく、短いので、良い例ではありません。extends JPanel
AmortizationLayout
(53 LOC)タイトル付きの境界線を使用して親と子のレイアウトの概要を示しているため、例として特に便利です。