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

时间:2013-07-02 12:37:04

标签: java jtabbedpane

我有一个JFrame和两个JPanelsJframe包含JTabbedPaneMenuBar和一个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);
    }

但是当我点击按钮时,我得到了#34; Method Called"。这意味着正在调用该方法,但该面板未添加到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);
    }

但这也没有增加小组。 我该怎么办?

2 个答案:

答案 0 :(得分:1)

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

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

} 

答案 1 :(得分: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);
            }
        });
    }