【问题标题】:How can I pass a JPanel as a parameter to a method?如何将 JPanel 作为参数传递给方法?
【发布时间】:2017-01-21 17:20:11
【问题描述】:

让我问一下。 我在 Netbeans 的一个 java 项目中工作。我创建了一个 JFrameForm(设计模式),在 JFrameForm 内部,有五 (5) 个 JPanel。

我找到了一种方法来启用/禁用 Jpanel 中的所有组件。有效。

private void changeState(){
    for(Component c : mypanel.getComponents()){
        c.setEnabled(false);
    }
}
//mypanel it's one of a five panels in JFrameForm.
//I would like pass all the JPanel as parameters

我正在尝试编写一个方法,我可以在其中传递类似参数,就像我调用该方法时需要的 JPanel。你能帮帮我吗?

我正在尝试这个,但不工作:

private void changeState(JPanel p){
    for(Component c : p.getComponents()){
        c.setEnabled(false);
    }
}

如果答案很简单,我很抱歉。我是 JAVA 和这个社区的初学者。我希望你能帮助我。

【问题讨论】:

  • 你的方法有什么错误?
  • 你怎么称呼它?你得到了什么结果?
  • 看来我错误地调用了传递给 changeState() 方法的参数。这是我使用 JAVA 的第一周。这是一个很棒的社区,非常感谢!代码有效!

标签: java parameters jframe jpanel parameter-passing


【解决方案1】:

但它确实有效!当我运行以下代码(包括您的方法)时,它给了我 2 x true,然后是 2 x false。所以方法没问题。

public class Panelik extends JFrame {
    JPanel panel;
    JLabel label1, label2;

    public Panelik() {
        panel = new JPanel();
        label1 = new JLabel();
        label2 = new JLabel();
        panel.add(label1);
        panel.add(label2);

        System.out.println(label1.isEnabled());
        System.out.println(label2.isEnabled());

        changeState(panel);

        System.out.println(label1.isEnabled());
        System.out.println(label2.isEnabled());
    }

    public void changeState(JPanel p) {
        for(Component c : p.getComponents()) {
            c.setEnabled(false);
        }
    }

    public static void main(String[] args) {
        Panelik panelik = new Panelik();
    }
}

【讨论】:

  • 看来我错误地调用了传递给 changeState() 方法的参数。这是我使用 JAVA 的第一周。这是一个很棒的社区,非常感谢!代码有效!我测试了你的代码,工作正常!谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-07-03
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多