如何用Java中的动作隐藏JPanel?

问题描述 投票:-3回答:3

到目前为止,我已经得到了这一点,但我一直在收到错误。我现在不知道发生了什么,我在线寻找教程,但我现在不知道如何解决我的问题。

JComboBox<String> cmdChoose = new JComboBox<String>();
    cmdChoose.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (cmdChoose.getSelectedItem() == "Json Sign") {

                /* I am getting the error here it is below it says mDataone
                  cannot be resolved so please help me! */

                mDataone.setVisible(true);
            }

            if (cmdChoose.getSelectedItem() == "Summon") {

            }
        }
    });

    cmdChoose.setBounds(149, 11, 181, 27);
    mainPage.getContentPane().add(cmdChoose);

    cmdChoose.addItem("Json Sign");
    cmdChoose.addItem("Summon");

    cmdChoose.setSelectedItem(null);

    Label cglbl = new Label("Command Generators:");
    cglbl.setBounds(10, 16, 133, 22);
    mainPage.getContentPane().add(cglbl);

    JPanel mDataone = new JPanel();
    mDataone.setBounds(10, 74, 324, 209);
    mainPage.getContentPane().add(mDataone);
    mDataone.setLayout(new GridLayout(1, 0, 0, 0));
java swing jpanel
3个回答
1
投票

您已经创建了一个用于处理动作的内部类,并且在它之后声明了mDataone,因此在处理动作事件之前创建它,但最好的方法是使其静态化。

你应该在你的代码中做的另一件事是你应该使用equals()或equalsIgnoreCase(),cmdChoose.getSelectedItem()。equalsIgnoreCase(“Json Sign”)。希望能帮助到你...


0
投票

在将JPanel mdataone附加到JFrame之前,您可以看到它。您已将JPanel的声明放在代码的末尾,因此当在ActionPerformed()方法中调用setVisible()方法时,您会收到一条错误消息,指出未定义mdataone。因此,要解决此错误,您需要将以下代码从其实际位置(即从末尾)放到actionPerformed()方法的上面。

    JPanel mDataone = new JPanel();
    mDataone.setBounds(10, 74, 324, 209);
    mainPage.getContentPane().add(mDataone);
    mDataone.setLayout(new GridLayout(1, 0, 0, 0));

-1
投票

像这样?

JPanel mDataone = new JPanel();
    mDataone.setBounds(10, 74, 324, 209);
    mainPage.getContentPane().add(mDataone);
    mDataone.setLayout(new GridLayout(1, 0, 0, 0));

    JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    mDataone.add(tabbedPane);

    JPanel first_line = new JPanel();
    tabbedPane.addTab("1st Line", null, first_line, null);

    JPanel second_line = new JPanel();
    tabbedPane.addTab("2nd Line", null, second_line, null);

    JPanel third_line = new JPanel();
    tabbedPane.addTab("3rd Line", null, third_line, null);

    JPanel forth_line = new JPanel();
    tabbedPane.addTab("4th Line", null, forth_line, null);

    JComboBox<String> cmdChoose = new JComboBox<String>();
    cmdChoose.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            if (cmdChoose.getSelectedItem() == "Json Sign") {
                mDataone.setVisible(true);
            }

            if (cmdChoose.getSelectedItem() == "Summon") {

            }
        }
    });

    cmdChoose.setBounds(149, 11, 181, 27);
    mainPage.getContentPane().add(cmdChoose);

    cmdChoose.addItem("Json Sign");
    cmdChoose.addItem("Summon");

    cmdChoose.setSelectedItem(null);
© www.soinside.com 2019 - 2024. All rights reserved.