1

我有一个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);
    }

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

但这也不是添加面板。我应该怎么办?

4

2 回答 2

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

} 
于 2018-01-19T15:25:43.247 回答
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);
            }
        });
    }
于 2014-06-04T09:27:25.130 回答