簡體   English   中英

Java:JPanel GridBagLayout問題

[英]Java : JPanel GridBagLayout issue

我正在GridBadLayout一個程序,其中JPanel具有兩個組件JTextFieldJLabel ,並且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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM