0

因此,我想知道执行以下操作之一是否错误:

如果我有课MyJPanel extends JPanel,我应该...

一种)

编写构造函数,使其在面板本身的构造过程中添加 JComponents,如下所示:

public MyJPanel() {

    JButton button = new JButton("Hello");
    JLabel labelOne = new JLabel("Hello");
    JLabel labelTwo = new JLabel("Bye");

    add(button);
    add(labelOne);
    add(labelTwo);

}

或 b)

在调用的类中声明这些组件MyJPanel testPanel = new MyJPanel();并显式地声明add()它们?所以基本上:

public class SomeOtherClass {


    public static void main(String[] args) {

        JButton button = new JButton("Hello");
        JLabel labelOne = new JLabel("Hello");
        JLabel labelTwo = new JLabel("Bye");

        MyJPanel testPanel = new MyJPanel();
        testPanel.add(button);
        testPanel.add(labelOne);
        testPanel.add(labelTwo);

    }

}

我知道这可能是一个愚蠢的问题,但我只是想知道两者都可以做还是其中一个不行。

4

2 回答 2

1

将此类视为具有某些特定功能(按钮)的“组件”。这就是为什么我认为从外部添加功能没有意义。在构造函数中添加按钮有几个优点:

  • 可重用性 - 您可以在其他地方/应用程序等中重用组件。
  • 封装——组件不依赖任何外部依赖;这也提高了可测试性。
  • 可维护性——你可以轻松地重构你的代码,只需移动这个类——不用担心这个类之外的任何代码。
于 2013-09-14T16:25:57.270 回答
1

您提供的代码只是一个测试代码,所以很难说它应该如何设计。你提出的这些方式原则上都没有错。作为现实世界应用程序的规则,您应该制作高度可维护、可重用的组件。但是,如何创建它们的答案取决于您需要哪种级别的灵活性。您还可以考虑使用一些工厂方法来生产您需要的形状的组件。看看一些“默认”Java 组件是如何设计和实现的也不是一个坏主意,例如看看http://docs.oracle.com/javase/6/docs/api/javax/swing/ JOptionPane.html

于 2013-09-14T16:41:39.857 回答