我的主类似乎没有添加对象

时间:2017-01-20 08:44:14

标签: java swing

我对Java有点新意。

我正在尝试在我的Swing应用中添加页脚JPanel。我是通过在一个单独的类中使用页脚的JPanel来实现这一点的。

这是我的FooterBar类,其中包含JPanel属性:

public class FooterBar extends JPanel {

    private JPanel footerPanel = new JPanel();
    private JLabel label;

    public FooterBar() {

        // Footer test
        footerPanel.setPreferredSize(new Dimension(640, 16));
        footerPanel.setLayout(new BoxLayout(footerPanel, BoxLayout.X_AXIS));
        footerPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));
        JLabel label;

        label = new JLabel("test");
        label.setHorizontalAlignment(SwingConstants.LEFT);
        footerPanel.add(label);

        label = new JLabel("test 2");
        label.setHorizontalAlignment(SwingConstants.CENTER);
        footerPanel.add(label);

    }

}

这就是我在主课堂上所拥有的。 (称为MainFrame)

public class MainFrame extends JFrame {

    private TextPanel textPanel = new TextPanel();
    private Toolbar toolbar = new Toolbar();
    private FormPanel formPanel = new FormPanel();
    private FooterBar footerPanel = new FooterBar();

private static String windowTitle = "WIN7 USB3 Installer";

/**
 * The properties for the window itself
 */
public MainFrame() {
    super(windowTitle);

    setLayout(new BorderLayout());

    add(formPanel, BorderLayout.WEST);
    add(textPanel, BorderLayout.CENTER);
    add(footerPanel, BorderLayout.SOUTH);
}

}

如果我在主类中拥有所有JPanel属性,它就能完美运行。但它并没有向JPanel展示2个不同的类别 虽然其他组件确实向上移动了一些,但它们不会与JPanel冲突。所以我猜它只是没有初始化实际的JPanel。那是为什么?

1 个答案:

答案 0 :(得分:2)

您的FooterBar已经是JPanel,创建另一个JPanel并向其中添加内容是没有用的,所以只需直接使用您的FooterBar面板:

public class FooterBar extends JPanel {

    private JLabel label;

    public FooterBar() {

        // Footer test
        setPreferredSize(new Dimension(getWidth(), 16));
        setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
        setBorder(new BevelBorder(BevelBorder.LOWERED));
        JLabel label;

        label = new JLabel("test");
        label.setHorizontalAlignment(SwingConstants.LEFT);
        add(label);

        label = new JLabel("test 2");
        label.setHorizontalAlignment(SwingConstants.CENTER);
        add(label);

    }

}