【问题标题】:JPanel to JFrame - moving the panel class to the frame GUIJPanel 到 JFrame - 将面板类移动到框架 GUI
【发布时间】:2014-04-30 04:45:45
【问题描述】:

如何将面板放入框架中。我已经尝试了几个小时,但还是不明白。

我尝试了JPanel panel = new TopPanel();,但它不会调用框架。我们的老师一周前在初学者课上教给我们这个,从那以后,我一直很困惑。

感谢您提前提供帮助,请解释一下。

框架:

public class CourseGUI extends JFrame {
    public CourseGUI()
    {

        super("CourseGUI Frame");


        JPanel topPanel = new JPanel();
        topPanel.setBackground(java.awt.Color.WHITE);
        Dimension d = new Dimension(800,600);

        topPanel.setPreferredSize(d);

        this.setLayout(new BorderLayout());

        this.add(topPanel, BorderLayout.NORTH);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setSize(800,600);
        //JPanel tp = new TopPanel();
        //this.add(tp.BorderLayout.North);

        JPanel panel = new TopPanel();

        this.setVisible(true);
    }
    public static void main(String[] args)
    {
        new CourseGUI();
    }

}

面板(假设在顶部)

import javax.swing.*;
import java.awt.*;


public class TopPanel extends JPanel {

    public TopPanel() {
        JPanel panel = new JPanel();
        JLabel Crse = new JLabel("Course Info");
        Crse.setFont(new Font("Serif", Font.PLAIN, 14));
        panel.add(Crse);

    }
}

【问题讨论】:

  • 您的代码中有两个面板,但您只将第一个添加到框架中;您必须添加实际具有标签的第二个面板;将其添加到框架中,例如: this.add(panel, BorderLayout.SOUTH);
  • 这里,代码不应该扩展框架或面板,而只是使用每个的实例。请了解类、方法和属性名称的常见 Java naming conventions(特别是名称的大小写)并始终如一地使用它们。

标签: java swing jpanel frame


【解决方案1】:

在 TopPanel 类中,您只需将标签添加到另一个 JPanel 对象面板中,而此面板不会添加到 TopPanel 中。我在您的 TopPanel 课程中做了一些改动。 (如果需要,您可以更改布局)

 import javax.swing.*;
 import java.awt.*;


 public class TopPanel extends JPanel {

     public TopPanel() {

         JLabel Crse = new JLabel("Course Info");
         Crse.setFont(new Font("Serif", Font.PLAIN, 14));
        add(Crse);

     }
 }

在 CourseGui 中使用这个 TopPanel

  JPanel topPanel = new TopPanel();

如果有效,请尝试接受

你也可以用

    JPanel topPanel = new JPanel();
    JLabel Crse = new JLabel("Course Info");
    Crse.setFont(new Font("Serif", Font.PLAIN, 14));
    topPanel.add(Crse);

【讨论】:

  • 为什么要在这里扩展面板?
  • 扩展JPanel后,TopPanel本身就是一个JPanel(继承)。您可以将 TopPanel 用作 JPanel,因为 JPanel 的所有属性都在 TopPanel 中可用。 docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
  • 说了这么多,我还是不明白。我得到了每个人都告诉我做的同样的事情,我做到了,但我仍然得到一个空白的 CourseGUI:C
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多