Java 将类中的JPanel添加到主类中的JFrame
我正在尝试添加此面板:Java 将类中的JPanel添加到主类中的JFrame,java,swing,user-interface,awt,Java,Swing,User Interface,Awt,我正在尝试添加此面板: 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.setVisib
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();
}
}
但是没有任何东西增加到框架中,我得到了一个空窗口。我做错了什么?您需要将
面板添加到TopPanel
中的容器中
add(panel);
由于您当前没有向JPanel
添加任何新功能,您可以简单地使用JPanel
的直接实例,而不是子分类。不需要调用panel.setVisible(true)
。当顶层窗口可见时,Swing将使所需组件可见。您需要将面板添加到TopPanel
中的容器中
add(panel);
由于您当前没有向JPanel
添加任何新功能,您可以简单地使用JPanel
的直接实例,而不是子分类。不需要调用panel.setVisible(true)
。当顶层窗口可见时,Swing将使所需的组件可见。因为您的类已经扩展了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);
}
}
我也同意雷默斯的评论。没有必要扩展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 );
或者更简单,因为您只是将一个组件添加到面板中,所以甚至不需要创建面板。只要做:
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 );
因为您的类已经扩展了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);
}
}
我也同意雷默斯的评论。没有必要扩展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 );
或者更简单,因为您只是将一个组件添加到面板中,所以甚至不需要创建面板。只要做:
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 );