Jpanel没有出现在JFrame中

时间:2014-05-10 01:00:11

标签: java jframe

所以我试图让JFrame显示一个其他5个JPanel的JPanel。我没有任何语法错误,所有显示的都是一个非常小的屏幕。我整天都在这里,还没有找到解决方案。

public class addressPanel extends JPanel {
    private JTextField nameT;
    private JTextField addressT;
    private JTextField cityT;
    private JTextField stateT;
    private JTextField zipCodeT;
    private JTextField phoneNumberT;
    private JLabel Title;
    private JLabel addressTitle;
    private JLabel nameL;
    private JLabel addressL;
    private JLabel stateL;
    private JLabel cityL;
    private JLabel zipCodeL;
    private JLabel phoneNumberL;
    private JLabel orderType;
    private JRadioButton takeOut;
    private JRadioButton delivery;
    private JButton clear;
    private JButton submit;
    private JPanel addressTextPanel;
    private JPanel addressLabelPanel;
    private JPanel orderTypePanel;
    private JPanel titlePanel;
    private JPanel buttonsPanel;

    public JPanel addressTextPanel() {
        nameT = new JTextField(1);
        addressT = new JTextField(2);
        cityT = new JTextField(3);
        stateT = new JTextField(4);
        zipCodeT = new JTextField(5);
        phoneNumberT = new JTextField(6);
        Font font = new Font(Font.SERIF, Font.PLAIN, 24);
        nameT.setFont(font);
        addressT.setFont(font);
        cityT.setFont(font);
        stateT.setFont(font);
        zipCodeT.setFont(font);
        phoneNumberT.setFont(font);
        JPanel addressTextPanel = new JPanel();
        addressTextPanel.setPreferredSize(new Dimension(125, 250));
        addressTextPanel.setLayout(new BoxLayout(addressTextPanel, BoxLayout.Y_AXIS));
        addressTextPanel.add(nameT);
        addressTextPanel.add(addressT);
        addressTextPanel.add(cityT);
        addressTextPanel.add(stateT);
        addressTextPanel.add(zipCodeT);
        addressTextPanel.add(phoneNumberT);
        return addressTextPanel;
    }

    public JPanel addressLabelPanel() {
        nameL = new JLabel("Name:");
        addressL = new JLabel("Address:");
        cityL = new JLabel("City:");
        zipCodeL = new JLabel("Zip Code:");
        stateL = new JLabel("State:");
        phoneNumberL = new JLabel("Phone Number:");
        nameL.setFont(nameL.getFont().deriveFont(24.0f));
        addressL.setFont(addressL.getFont().deriveFont(24.0f));
        cityL.setFont(cityL.getFont().deriveFont(24.0f));
        zipCodeL.setFont(zipCodeL.getFont().deriveFont(24.0f));
        stateL.setFont(stateL.getFont().deriveFont(24.0f));
        phoneNumberL.setFont(phoneNumberL.getFont().deriveFont(24.0f));
        JPanel addressLabelPanel = new JPanel();
        addressLabelPanel.setPreferredSize(new Dimension(125, 250));
        addressLabelPanel.setLayout(new BoxLayout(addressLabelPanel, BoxLayout.Y_AXIS));
        addressLabelPanel.add(nameL);
        addressLabelPanel.add(addressL);
        addressLabelPanel.add(cityL);
        addressLabelPanel.add(stateL);
        addressLabelPanel.add(zipCodeL);
        addressLabelPanel.add(phoneNumberL);
        return addressLabelPanel;
    }

    public JPanel orderTypePanel() {
        orderType = new JLabel("Order Type:");
        takeOut = new JRadioButton("Take Out");
        delivery = new JRadioButton("Delivery");
        orderType.setFont(takeOut.getFont().deriveFont(24.0f));
        takeOut.setFont(takeOut.getFont().deriveFont(24.0f));
        delivery.setFont(delivery.getFont().deriveFont(24.0f));
        JPanel orderTypePanel = new JPanel();
        orderTypePanel.setPreferredSize(new Dimension(250, 125));
        orderTypePanel.setLayout(new BoxLayout(orderTypePanel, BoxLayout.Y_AXIS));
        orderTypePanel.add(orderType);
        orderTypePanel.add(takeOut);
        orderTypePanel.add(delivery);
        return orderTypePanel;
    }

    public JPanel titlePanel() {
        Title = new JLabel("Pizza Order Form");
        addressTitle = new JLabel("Address");
        Title.setFont(Title.getFont().deriveFont(36.0f));
        addressTitle.setFont(addressTitle.getFont().deriveFont(36.0f));
        JPanel titlePanel = new JPanel();
        titlePanel.setPreferredSize(new Dimension(500, 100));
        titlePanel.setLayout(new BoxLayout(titlePanel, BoxLayout.Y_AXIS));
        titlePanel.add(Title);
        titlePanel.add(addressTitle);

        return titlePanel;
    }

    public JPanel buttonsPanel() {
        clear = new JButton("Clear");
        submit = new JButton("Submit");
        clear.setFont(clear.getFont().deriveFont(24.0f));
        submit.setFont(submit.getFont().deriveFont(24.0f));
        JPanel buttonsPanel = new JPanel();
        buttonsPanel.setPreferredSize(new Dimension(500, 100));
        buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.X_AXIS));
        buttonsPanel.add(clear);
        buttonsPanel.add(submit);

        return buttonsPanel;
    }

    public addressPanel() {
        JPanel addressParent = new JPanel(new BorderLayout());
        addressParent.add(new titlePanel(), BorderLayout.NORTH);
        addressParent.add(new orderTypePanel(), BorderLayout.WEST);
        addressParent.add(new addressLabelPanel(), BorderLayout.CENTER);
        addressParent.add(new addressTextPanel(), BorderLayout.EAST);
        addressParent.add(new buttonsPanel(), BorderLayout.SOUTH);

    }

    public static void main(String[] args) {
        // Create Main Panel
        JFrame frame = new JFrame("");
        frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        frame.getContentPane().add(new addressPanel());
        // Color background = new Color(238,233,191);
        // frame.getContentPane().setBackground(background);
        frame.pack();
        frame.setVisible(true);

    }
}

1 个答案:

答案 0 :(得分:1)

阅读您的代码。该程序创建一个JFrame。它创建了一个addressPanel实例(应该命名为AddressPanel)。并且它将此addressPanel实例添加到帧conent窗格。

现在添加到addressPanel的内容是什么?没什么:

public addressPanel()
{
    JPanel addressParent = new JPanel(new BorderLayout());
    addressParent.add (new titlePanel(), BorderLayout.NORTH);
    addressParent.add (new orderTypePanel(), BorderLayout.WEST);
    addressParent.add (new addressLabelPanel(), BorderLayout.CENTER);
    addressParent.add (new addressTextPanel(), BorderLayout.EAST);
    addressParent.add (new buttonsPanel(), BorderLayout.SOUTH);
}

addressPanel的构造函数创建了另一个面板(addressParent),为这个addressParent面板添加了很多东西,但是没有向this添加任何东西,即addressPanel。所以addressPanel是空的。

请尊重Java命名约定,以使您的代码可读。类以大写字母开头。