将JPanel的扩展添加到JFrame

时间:2014-04-08 02:48:41

标签: java swing jframe jpanel

我有一个包含我的程序将显示的主GUI窗口的类

/**
 * GUI program to run a coffee/bagel shoppe
 * @author Nick Gilbert
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class CoffeeShop extends JPanel {
    private final int WINDOW_WIDTH = 400;   // Window width
    private final int WINDOW_HEIGHT = 300;  // Window height
    private JFrame mainFrame;

    public CoffeeShop()
    {
        //Setting up mainframe configurations
        mainFrame = new JFrame();
        mainFrame.setTitle("Order Entry Screen!");
        mainFrame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setLayout(new BorderLayout());

        //Piecing together GUI window
        mainFrame.add(new TitleRegister(), BorderLayout.NORTH);
        mainFrame.setVisible(true);
    }

    public static void main(String[] args) {
        new CoffeeShop();
    }
}

正如您所看到的,我尝试添加mainFrame JPanel实际上是我写的一个扩展JPanel

的类
/**
 * Sets title at top of register
 * @author Nick Gilbert
 */
import javax.swing.*;

import java.awt.*;
import java.awt.Event.*;

public class TitleRegister extends JPanel {
    private JPanel titlePanel;
    private JLabel titleLabel;

    public TitleRegister() {
        titlePanel = new JPanel();
        titleLabel = new JLabel("Order Entry Screen", SwingConstants.CENTER);

        titlePanel.add(titleLabel);
        titlePanel.setVisible(true);
    }
}

然而,当我这样做时,TitleRegister的实例没有显示出来。我将setVisible设置为true,因此它应该显示出来。

1 个答案:

答案 0 :(得分:2)

您实际上没有在TitleRegister窗格中添加任何内容...

如果不了解更多信息,您可以随心所欲地停留......

public class TitleRegister extends JPanel {
    private JLabel titleLabel;

    public TitleRegister() {
        titleLabel = new JLabel("Order Entry Screen", SwingConstants.CENTER);

        add(titleLabel);
    }
}

事实上,您可以简单地将JLabel添加到mainFrame

备注:

没有必要CoffeeShop扩展JPanel,你没有添加任何东西,你的构造函数构建了一个JFrame并添加了UI。 ..

依靠pack而不是setSize,它会产生更可靠的输出,确保内容区域具有正确显示所需的空间。

确保仅从事件调度线程的上下文创建和修改UI。有关详细信息,请参阅Initial Threads