2013-07-02 52 views
1

我有一個JFrame和兩個JPanelsJframe包含JTabbedPaneMenuBar和一個menuItem。當我點擊menuitem時,面板被添加到JTabbedPane。該代碼是這樣的 -在按鈕上打開新標籤點擊JAVA

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中。 請幫忙。

我也曾在按鈕的actionPerformed方法的代碼嘗試這使得JTabbedPane1公衆JFrame-

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

之後但這也沒有加入該小組。 我該怎麼辦?

+1

你的問題,雖然好範圍的,是難以遵循,由於大量細節的混亂。 請考慮以較簡單的方式修改您的問題。 –

+0

@Allan簡而言之,我希望通過點擊按鈕將新選項卡(面板)添加到jtabbedpane。 –

+0

好的,我還想澄清一件事:你想讓這個選項卡可以添加無數次,或者你有一個特定的選項卡,你只想顯示一次?前一種情況的一個例子可能是Web瀏覽器中的「添加新標籤」功能。後一種情況的例子可以是「顯示/隱藏」類型的按鈕。 –

回答

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上創建面板。

我適應您的例子,它是工作:

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

}