在JAVA中单击按钮打开新选项卡

在JAVA中单击按钮打开新选项卡,java,jtabbedpane,Java,Jtabbedpane,我有一个JFrame和两个jpanelJframe包含JTabbedPane,MenuBar和一个menuItem。当我单击菜单项时,一个面板被添加到JTabbedPane。守则如下: private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: NewJPanel jp = new NewJPanel();

我有一个
JFrame
和两个
jpanel
Jframe
包含
JTabbedPane
MenuBar
和一个
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
中添加一个新面板。对于按钮的
操作执行
方法,我有以下代码-

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。 请帮忙

在JFrame中公开JTabbedPane1之后,我也在按钮的
actionPerformed
方法的代码中尝试了这一点-

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        NewJFrame1 jf = new NewJFrame1();
        NewJPanel1 pane = new NewJPanel1();        
        jf.jTabbedPane1.add("Panel1",pane);
    }
但这也不是在添加面板。
我该怎么办

您的代码包含以下两行错误:

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);
            }
        });
    }
NewJFrame1 jf=newnewjframe1(); 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();  

} 

您的代码包含以下两行错误:

NewJFrame1 jf=newnewjframe1(); 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();  

} 

你的问题虽然范围很广,但由于大量细节的混乱,很难理解。请考虑用一种不那么复杂的方式修改你的问题。“艾伦,我想在按钮点击上添加一个新的标签(面板)到JTabDeBean.OK,还有一件事我想澄清:你想让这个标签成为可以无限多次添加的东西吗?或者你有一个特定的标签,你想只显示一次吗?前一种情况的一个例子可能是web浏览器中的“添加新选项卡”功能。后一种情况的示例可能是“显示/隐藏”类型的按钮。@Allan First one(如浏览器新选项卡)新选项卡是否有自己的actionlistener?如果没有,我可以帮你。你的问题虽然范围很广,但由于大量细节的混乱,很难理解。请考虑用一种不那么复杂的方式修改你的问题。“艾伦,我想在按钮点击上添加一个新的标签(面板)到JTabDeBean.OK,还有一件事我想澄清:你想让这个标签成为可以无限多次添加的东西吗?或者你有一个特定的标签,你想只显示一次吗?前一种情况的一个例子可能是web浏览器中的“添加新选项卡”功能。后一种情况的示例可能是“显示/隐藏”类型的按钮。@Allan First one(如浏览器新选项卡)新选项卡是否有自己的actionlistener?如果没有,我可以帮你。