[英]Java : JPanel GridBagLayout issue
我正在GridBadLayout
一個程序,其中JPanel
具有兩個組件JTextField
和JLabel
,並且JPanel
在其中使用GridBadLayout
。我為GridBagConstraints
創建了一個在其中添加組件的方法,但是該方法不適用於JPanel
實例。 JFrame
。我想用JPanel
修復此方法,但不知道該怎么做。
碼:
public class A extends JFrame {
private final GridBagLayout layout;
private final GridBagConstraints gbc;
private JPanel p;
private JLabel label1;
private JTextField field1;
public A() {
super("Frame");
layout = new GridBagLayout();
gbc = new GridBagConstraints();
p = new JPanel();
p.setLayout(layout);
gbc.gridy = 0;
label1 = new JLabel("Enter Name");
p.addConstraints(label1);
gbc.gridx = 1;
field1 = new JTextField(15);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
// Method for GridBag Component Constraints
private void addConstraints(Component com) {
layout.setConstraints(com, gbc);
add(com);
}
主要方法
public class MainMethod {
public static void main(String[] args) {
A frame = new A();
}
}
add(com);
將組件添加到“ this”,即JFrame,而不是JPanel。 另外,Java中已經提供了addConstraints
方法add(Component comp, Object constraints)
。
除了使用addConstraints方法,您可以嘗試以下操作:
p.add(label1, gbc);
旁邊,我缺少this.add(p);
。
編輯:
如果只想調用addConstraints(Component comp)
則將方法更新為此:
// Method for GridBag Component Constraints
private void addConstraints(Component com) {
p.add(com, gbc);
}
這樣,構造函數可以如下所示:
public A() {
super("Frame");
p = new JPanel();
this.add(p);
p.setLayout(new GridBagLayout());
gbc = new GridBagConstraints();
gbc.gridy = 0;
label1 = new JLabel("Enter Name");
addConstraints(label1);
gbc.gridx = 1;
field1 = new JTextField(15);
addConstraints(field1);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.