2014-05-10 126 views
-1

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

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); 

    } 
} 
+0

我不应该帮助你,因为你只是懒洋洋地粘贴了大量的代码,没有明显的努力来研究/减少/记录你的问题......但尽管如此,我注意到'new titlePanel()'和其他不在你的代码中。你可能只是指''titlePanel()'没有'new'。 – schmop

+0

我得到的第一个错误是空指针异常错误。很抱歉,我的帖子无法与人们通常发布的内容相提并论。即使当我做出改变时,你已经提出了同样令人难以置信的小窗口出现,没有内容。 – user3597860

回答

1

阅读您的代码。该程序创建一个JFrame。它创建一个addressPanel的实例(应该命名为AddressPanel)。并且它将此地址面板实例添加到框架窗格。

现在添加到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命名约定,使您的代码可读。类以大写字母开头。

+1

非常感谢。我啃过的东西比我咀嚼这个项目的时候多得多,而且一直在努力教我自己所需要的一切。 – user3597860

+0

@ user3597860如果这解决了您的问题,请点击左上角的复选标记。 – schmop