JPanelの幅がJFrameのwithと等しくなるように設定されたJFrame内のJPanelとのインターフェースを作成しています。予想に反して、プログラムを実行してディスプレイを表示すると、JPanelは、必要なサイズよりも小さい非常に小さなボックスとして表示されます。これは、JFrameと同じ幅である必要があります。ただし、JPanelの幅を約6減らすと、JFrameで正確なサイズが表示されます。JFrameにはある種のマージンやパディングがあるように思えますが、実際にはわかりません。JPanelの幅を親のJFrameの幅と同じにできない理由と、可能であればそれを行う方法を教えてください。私は本当にそれらに同じ幅の原因を持たせたいのです。それが私のデザインの設定方法です。私のコードは以下の通りです:
`import java.awt.*; //importing awt package
import javax.swing.*; //importing swing package
//class definition
public class PMSysClient {
//declaration of variables
private JFrame lgFrame; //login frame
private JFrame fdFrame; //frame for front desk
private JFrame docFrame; //frame for doctor
private JPanel logHeadPan; //header panel in login
private JPanel logAreaPan; //login area panel
//constructor definition
public PMSysClient() {
initialise();
}//end of constructor
//method to initialise class
public void initialise() {
lgFrame = new JFrame();
Container cont = lgFrame.getContentPane();
lgFrame.setSize(863, 569);
lgFrame.setLocationRelativeTo(null);
lgFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cont.setBackground(new Color(231, 228, 204));
cont.setLayout(new GridBagLayout());
logHeadPan = new JPanel();
logHeadPan.setBackground(new Color(204, 153, 255));
logHeadPan.setPreferredSize(new Dimension(863, 210));
GridBagConstraints c1 = new GridBagConstraints();
c1.weighty = 0.1;
c1.weightx=0.1;
c1.gridx = 0;
c1.gridy = 0;
c1.anchor = GridBagConstraints.FIRST_LINE_START;
lgFrame.add(logHeadPan, c1);
lgFrame.setVisible(true);
}//end of initialise
//main method definition
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {
}
new PMSysClient();
}//end of main method
}`