2014-05-10 4 views
-1

JFrame을 가져 와서 다른 5 개의 JPanel이있는 JPanel을 표시하려고합니다. 나는 문법 오류가 없으며 그 모든 표시는 매우 작은 화면이다. 나는 하루 종일 여기에 있었고 아직 해결책을 찾지 못했습니다.JFrame이 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()'및 기타 귀하의 코드에 없습니다. 'new'가 없으면'titlePanel()'을 의미 할 것입니다. – schmop

+0

첫 번째 오류는 널 포인터 예외 오류입니다. 내 게시물이 사람들이 일반적으로 게시하는 방식과 동등하지 않음을 유감스럽게 생각합니다. 당신이 제안한 변화를 만들었을 때도 그 안에는 내용이없는 똑같은 매우 작은 창이 나타납니다. – user3597860

답변

1

코드를 읽어보십시오. 프로그램이 JFrame을 만듭니다. addressPanel (AddressPanel)의 인스턴스를 만듭니다. 그리고이 addressPanel 인스턴스를 프레임 conent pane에 추가합니다.

이제 addressPanel에 무엇이 추가됩니까? 아무것도 : addressPanel의 생성자는 다른 패널 (addressParent)을 생성

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

이 addressParent 패널에 많은 물건을 추가,하지만 this의 addressPanel에 아무것도 추가하지 않습니다. 따라서 addressPanel은 비어 있습니다.

코드를 읽을 수 있도록 Java 명명 규칙을 존중하십시오. 클래스는 대문자로 시작합니다.

+1

정말 고마워요. 나는이 프로젝트를 맡아서 씹을 수있는 것보다 더 많은 것을 물어 뜯고 필요한 모든 것을 스스로 가르치려고 애 쓰고있다. – user3597860

+0

@ user3597860 문제가 해결되면 왼쪽 상단의 체크 표시를 누르십시오. – schmop

관련 문제