为什么我应该使用 JPanel?

Vin*_*ius 4 java swing jpanel

有什么区别:

public class Test {

    public static void main(String[] args) {
        JButton button= new JButton("1");
        button.setVisible(true);
        JPanel panel= new JPanel();
        panel.add(button);
        panel.setVisible(true);
        JFrame frame = new JFrame();
        frame.add(panel);
        frame.setVisible(true);
        frame.pack();

    }
}
Run Code Online (Sandbox Code Playgroud)

public class Test {

    public static void main(String[] args) {
        JButton button= new JButton("1");
        button.setVisible(true);
        JFrame frame = new JFrame();
        frame.add(button);
        frame.setVisible(true);
        frame.pack();

    }
}
Run Code Online (Sandbox Code Playgroud)

我知道 JPanel 是 GUI 组件的容器,但我真的没有看到使用它的实用性。当然我错了,但我从 Swing 开始,所以......为什么我应该使用 JPanel?真正的目的是什么?

use*_*460 6

为什么我应该使用 JPanel?

您将 JPanel 用于以下一项或多项好处:

  • 将组件组合在一起。
  • 为了更好地组织您的组件。
  • 使我们能够使用多种布局并结合它们的效果。(例如一个GridLayout用于数字键盘,一个CardLayout用于显示面板,您可以在其中切换图纸)。
  • 把一个大问题分解成子问题。因此,不是在一个大框架中实现所有内容,您可以专注于实现每个单独面板的属性(例如布局、尺寸、背景图像、背景颜色......等)
  • 如果您有自定义面板,则可重用。不同的类可以使用公共面板。
  • 为了便于调试,您可以单独测试每个面板。
  • 为了可扩展性。
  • 为了可维护性。

通常我认为 JFrame 就像现实生活中的画框,而 JPanel 就像一张白纸。我们不直接在框架上绘画。相反,我们在一张纸上作画,然后将纸插入框架中。直接在框架上绘画是可能的,但没有人这样做。

JFrame 和 JPanel 也是如此。我们可以直接将组件添加到框架中,但通常我们先将其添加到面板中,然后再将面板添加到框架中。