2013-02-11 2 views
0

제가 만든 프레임 클래스에 패널 클래스를 표시하는 데 문제가 있습니다. 여기 내 패널과 내 프레임 여기프레임이 내 패널을 표시하지 않습니다.

public class PasswordCheckerPanel extends JPanel 
{ 
    private String string; 
    private JButton B1, B2, B3; 
    private JLabel Rules, L1, L2, L3, Type, Retype; 
    private JTextField TF1, TF2; 
    private ArrayList<String> AR1 = new ArrayList<String>(); 
    private ArrayList<String> AR2 = new ArrayList<String>(); 
    private JFileChooser Input, Output; 


    public PasswordCheckerPanel() 
    { 
     this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); 
     JPanel Panel1 = new JPanel(); 
     TitledBorder Titled1 = BorderFactory.createTitledBorder("Password Checker Rules"); 
     Rules = new JLabel(); 
     Rules.setText("Use the following rules when creating your passwords"); 
     L1= new JLabel(); 
     L1.setText("1. Length must be greater than 6."); 
     L2 = new JLabel(); 
     L2.setText("2. Must contain atleast one alpha character"); 
     L3 = new JLabel(); 
     L3.setText("3. Must contain atleast one numeric character"); 
     Panel1.setBorder(Titled1); 
     Panel1.add(Rules); 
     Panel1.add(L1); 
     Panel1.add(L2); 
     Panel1.add(L3); 
     add(Panel1); 

     JPanel Panel2 = new JPanel(); 
     Type = new JLabel(); 
     Type.setText("Password: "); 
     Retype = new JLabel(); 
     Retype.setText("Re-Type Password: "); 
     TF1 = new JTextField(20); 
     TF2 = new JTextField(20); 
     Panel2.add(Type); 
     Panel2.add(TF1); 
     Panel2.add(Retype); 
     Panel2.add(TF2); 

     add(Panel2); 

     JPanel Panel3 = new JPanel(); 
     B1.setMnemonic('c'); 
     B1.setText("Check Password"); 
     B1.setToolTipText("Check Password"); 
     B1.addActionListener(new ButtonListener()); 

     B2.setMnemonic('f'); 
     B2.setText("Check Password in File"); 
     B2.setToolTipText("Check Password in File"); 
     B2.addActionListener(new ButtonListener()); 

     B3.setMnemonic('e'); 
     B3.setText("Exit"); 
     B3.setToolTipText("Exit"); 
     B3.addActionListener(new ButtonListener()); 

     Panel3.add(B1); 
     Panel3.add(B2); 
     Panel3.add(B3); 

     add(Panel3); 


    } 

} 

public class PasswordCheckerFrame extends JFrame 
{ 
    private PasswordCheckerPanel Panel = new PasswordCheckerPanel(); // Creates a PasswordCheckerPanel object 

    public PasswordCheckerFrame() // PasswordCheckerFrame Constructor 
    { 

      JFrame WindowBox = new JFrame(); // Creates a new JFrame 

      WindowBox.setTitle("Password Checker"); // sets JFrame title 
      WindowBox.setSize(500, 500); // sets JFrame size 
      WindowBox.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // sets the operation as to what happens when you close the gui 
      WindowBox.add(Panel); // adds the Panel to the JFrame 
      WindowBox.pack(); // Packs for size refitting 
      WindowBox.setVisible(true); // sets visibility of the Frame 

     } 
     public static void main(String[] args) 
     { 
      new PasswordCheckerFrame(); // creates an instance of the PasswordCheckerFrame class 
     } 

    } 

당신이 오류를 가리 수 내 프레임이 내가 만든 수있다인가? 나는 J Unit test verison을 계속해서 잘못하고있는 것을 발견하는 데 어려움을 겪고 있습니다. 그것은 코드인가 다른 것입니까?

답변

0

먼저 적절한 Java 변수 명명 규칙을 사용하십시오. 변수 이름은 대문자로 시작하지 마십시오. 클래스 이름 만 대문자로 시작하므로 코드가 읽기 쉽지 않습니다. 클래스의 정적 메서드를 호출하는 것 같습니다.

지금, 당신의 문제에 대한 : 당신은 당신의 버튼을 만들 결코

private JButton B1, B2, B3; 

그래서 그 변수는 null입니다.

편집 : 당신이 코드를 게시 (그리고 액션 리스너를 제거)와 코드가 잘 작동에

난 그냥 코드의 3 개 라인을 추가, 그래서 당신이 무엇을하는지 모르겠어요.

B1 = new JButton("B1"); // added the creation of the button 
B1.setMnemonic('c'); 
+0

아, 대회 물건에 대해 죄송합니다. 도와 줘서 고마워. – user1873746

+0

나는 당신이 원했던 것들을했지만 여전히 윈도우 패널에 내 패널을 표시하지 않는다. Frame, 지옥 windowFrame은 나타나지도 않는다. – user1873746

+0

@ user1873746, 편집 참조. 문제가 계속되면 SSCCE를 게시하십시오. – camickr

관련 문제