2013-07-02 53 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(); 

}