将面板插入其中一个网格后,GridLayout给出了一个错误

时间:2015-04-13 18:41:43

标签: java

我试图创建一个GridLayout面板,它包含5行1列。我创建了一个临时面板p,并在现场(1,1)向其添加组件后显示错误。你能指出它有什么问题吗,因为我盯着它看了一个多小时试图弄清楚什么是错的。错误说“对于类型assignmentGUI,方法GridLayout(int,int)是未定义的”。 assignmentGUI是我班级的名字。一旦我使用模板创建方法GridLayout它就可以工作,但似乎无法正常工作。

这是我写的代码:

import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.Vector;

import javax.swing.*; import javax.swing.event.*; import javax.swing.border.*;

public class assignmentGUI extends JFrame {

    public assignmentGUI() {
                this.setTitle("Module Chooser Tool");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setLayout(new FlowLayout(FlowLayout.LEFT));       
        //this.setPreferredSize(new Dimension(800, 500));


        JPanel p;

        // ***************************** PROFILE PANEL ************************************** //
        JPanel profilePanel = new JPanel();
        profilePanel.setLayout(new GridLayout(5,1));

        //--------Select course line---------------
        //Label
        JLabel courseLbl = new JLabel("Select course:");

        //ComboBox
        String[] choices = {"Computer Science", "Software Engineering"};
        JComboBox<String> combo = new JComboBox<String>(choices);

        //ADD everything
        p = new JPanel();
        p.add(courseLbl);
        p.add(combo);
        profilePanel.add(p, GridLayout(1,1));

...

1 个答案:

答案 0 :(得分:1)

profilePanel.add(p, GridLayout(1,1));

首先,Java使用0个偏移,因此第一行和第一列将由(0,0)表示,但这不会解决问题。

添加组件时,组件会按顺序添加到面板中。然后,布局管理器将根据布局管理器的规则布局组件。

当你说新的GridLayout(5,1)时,这不会创建5&#34;占位符&#34;。

要向面板添加组件,您需要执行以下操作:

panel.add(someComponent); // goes to row 0, column 0);
panel.add(anotherComponent); // goes to  row 1, column 0

阅读Layout Managers上Swing教程中有关工作示例的部分,以便开始使用基础知识。