このインターフェースをswingで作りたい:
サイズを変更するときは、すべてのサブパネルとボタンを次のようにサイズ変更します。
サイズを変更するのはメイン ウィンドウだけではありません。GridBagLayout を使用しています。そして、フレームのサイズを変更しているときに、パネルのサイズも変更するときに、GridBagLayoutを使用してパネルの境界をフレームの境界に貼り付ける方法がわかりません。
このインターフェースをswingで作りたい:
サイズを変更するときは、すべてのサブパネルとボタンを次のようにサイズ変更します。
サイズを変更するのはメイン ウィンドウだけではありません。GridBagLayout を使用しています。そして、フレームのサイズを変更しているときに、パネルのサイズも変更するときに、GridBagLayoutを使用してパネルの境界をフレームの境界に貼り付ける方法がわかりません。
通常、これにはネストされたレイアウトを使用します。
JPanel
aをBorderLayout
ベースとして使用します。JPanel
追加します。CENTER
BorderLayout
JPanel
の に保管します。JPanel
1 行 2 列の GridLayout で別のレイアウトを作成します。JPanel
2 つの を正しい順序で追加します。JPanel
これを の にSOUTH
追加しますBorderLayout
。これを実現するためのプロパティ、つまり JFrame のサイズが変更されたときに JPanel 自体もサイズ変更する必要がある場合は、 になりますGridBagConstraints.BOTH
。あなたのLeft JButtonはRight JButtonよりも少し小さいようです。本当にGridBagLayoutでこれを実現したい場合は、ここで小さなサンプルコードを作成しました。これを見て、発生する可能性のある質問をしてください。
import java.awt.*;
import javax.swing.*;
public class GridBagExample
{
private JPanel contentPane;
private void displayGUI()
{
JFrame frame = new JFrame("GridBag Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane = new JPanel();
contentPane.setLayout(new GridBagLayout());
JPanel centerPanel = new JPanel();
centerPanel.setOpaque(true);
centerPanel.setBackground(Color.CYAN);
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.FIRST_LINE_START;
gbc.weightx = 1.0;
gbc.weighty = 0.9;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;
gbc.fill = GridBagConstraints.BOTH; // appears to me this is what you wanted
contentPane.add(centerPanel, gbc);
JButton leftButton = new JButton("Left");
JButton rightButton = new JButton("Right");
gbc.gridwidth = 1;
gbc.gridy = 1;
gbc.weightx = 0.3;
gbc.weighty = 0.1;
contentPane.add(leftButton, gbc);
gbc.gridx = 1;
gbc.weightx = 0.7;
gbc.weighty = 0.1;
contentPane.add(rightButton, gbc);
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new GridBagExample().displayGUI();
}
});
}
}