2013-07-02 3 views
1

나는 하나의 JFrame과 두 개의 JPanels을 가지고 있습니다. JframeJTabbedPane, MenuBar 및 하나의 menuItem을 포함한다. menuitem을 클릭하면 패널이 JTabbedPane에 추가됩니다. 코드는 -버튼의 새 탭 열기 자바에서 클릭하십시오.

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { 
     // TODO add your handling code here: 
     NewJPanel jp = new NewJPanel(); 
     jTabbedPane1.add("Panel",jp); 
    } 

잘 작동합니다. 이 패널에는 버튼이 있습니다. JTabbedPane에 버튼을 클릭하면 새로운 패널이 추가됩니다. 버튼의 actionPerformed 방법이 코드가 오전 -

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
     NewJFrame1 jf = new NewJFrame1(); 
     jf.addPanel(); 
    } 

addPanel 내가 JFrame의에 정의하는 방법입니다. addPanel()의 코드는

public void addPanel() 
    { 
     System.out.println("Method Called"); 
     NewJPanel1 jp1 = new NewJPanel1(); 
     jTabbedPane1.add("Panel1",jp1); 
    } 

입니다하지만 버튼을 클릭하고 때 나는 "호출 방법"을 얻고있다. 메소드가 불려 가고있는 것을 나타내지 만, 패널은 JTabbedPane에 추가되지 않습니다. 도와주세요.

또한

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
     NewJFrame1 jf = new NewJFrame1(); 
     NewJPanel1 pane = new NewJPanel1();   
     jf.jTabbedPane1.add("Panel1",pane); 
    } 

JFrame-

에 JTabbedPane1를 공개 한 후 버튼을 actionPerformed 방법의 코드에서 이것을 시도했지만이 또한 패널을 추가하지 않습니다. 어떻게해야합니까?

+1

귀하의 질문은, 때문에 세부의 높은 양의 해체에 따라 가기 어렵다. 덜 복잡한 방식으로 질문을 수정하십시오. –

+0

@Allan 짧게 말해서 버튼 클릭시 jtabbedpane에 새 탭 (패널)을 추가 할 수 있습니다. –

+0

좋아, 한 가지 더 명확히하고 싶은 점은 :이 탭을 무한 횟수 추가 할 수있는 탭으로 지정 하시겠습니까? 아니면 한 번만 표시 할 특정 탭이 있습니까? 이전 상황의 예는 웹 브라우저에서 "새 탭 추가"기능 일 수 있습니다. 후자의 상황의 예는 "표시/숨기기"유형의 단추 일 수 있습니다. –

답변

0
public void createPage1() { 
     panel1 = new JPanel(); 
     panel1.setLayout(null); 

     JLabel label1 = new JLabel("Username:"); 
     label1.setBounds(10, 15, 150, 20); 
     panel1.add(label1); 

     JTextField field = new JTextField(); 
     field.setBounds(10, 35, 150, 20); 
     panel1.add(field); 

     JLabel label2 = new JLabel("Password:"); 
     label2.setBounds(10, 60, 150, 20); 
     panel1.add(label2); 

     JPasswordField fieldPass = new JPasswordField(); 
     fieldPass.setBounds(10, 80, 150, 20); 
     panel1.add(fieldPass); 

     JButton login=new JButton("login"); 
     login.setBounds(10, 120, 80, 25); 
     panel1.add(login); 

     login.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 

      panel4=new JPanel();  
      //panel4.setLayout(null); 
      panel4.add(new JLabel("welcome buddy")); 
      tabbedPane.addTab("Page 4", panel4); 
      } 
     }); 
    } 
+0

이 도움이 될 수 있습니다. – user3706347

1

귀하의 코드는이 두 줄에 오류가 포함되어

NewJFrame1 JF = 새로운 NewJFrame1을(); jf.addPanel();

실제로 동일한 JFrame에서 작업해야합니다. 실제로는 숨겨진 새 JFrame에 pannel을 생성해야합니다.

나는 당신의 예를 적응하며 노력하고 있습니다 : 잘 범위 있지만

public void addPanel() 
{ 
    System.out.println("Method Called"); 
    JPanel jp1 = new JPanel(); 
    jTabbedPane1.add("Panel1",jp1); 
} 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           

    this.addPanel(); 

}