我试图创建一个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));
...
答案 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教程中有关工作示例的部分,以便开始使用基础知识。