我正在尝试添加此面板:
import javax.swing.*;
import java.awt.*;
class TopPanel extends JPanel{
public TopPanel() {
JPanel panel = new JPanel();
JLabel label = new JLabel("Course Lookup GUI");
panel.add(label);
panel.setVisible(true);
}
}
到这样的框架:
import javax.swing.*;
import java.awt.*;
class CourseGUI extends JFrame{
public CourseGUI() {
this.setLayout(new FlowLayout());
this.setLocation(200,200);
TopPanel tPan = new TopPanel();
MiddlePanel mPan = new MiddlePanel();
this.add(tPan);
this.add(mPan);
this.setVisible(true);
}
public static void main(String[] args){
CourseGUI cGUI = new CourseGUI();
}
}
但没有任何东西正在添加到框架中,而我正在获得一个空窗口。我做错了什么?
答案 0 :(得分:4)
由于您的类已经扩展了JPanel,因此无需创建另一个面板。只需将标签添加到类本身
即可class TopPanel extends JPanel{
public TopPanel() {
//JPanel panel = new JPanel();
JLabel label = new JLabel("Course Lookup GUI");
add( label );
//panel.add(label);
//panel.setVisible(true);
}
}
我也同意Reimeus的评论。没有必要扩展JPanel来执行此功能。只是做:
JPanel tPan = new JPanel;
JLabel label = new JLabel("Course Lookup GUI");
tPan.add(label);
this.add( tPan );
或者更简单,因为您只是在面板中添加一个组件,所以甚至无需创建面板。只是做:
JLabel label = new JLabel("Course Lookup GUI");
this.add( label );
答案 1 :(得分:2)
您需要将panel
添加到TopPanel
add(panel);
由于您目前尚未向JPanel
添加任何新功能,因此您只需使用JPanel
的直接实例而不是子类。调用panel.setVisible(true)
是不必要的。当顶层窗口可见时,Swing将使所需组件可见。