为什么我应该使用JPanel?

时间:2016-03-19 12:26:55

标签: 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();

    }
}

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

    }
}

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

6 个答案:

答案 0 :(得分:3)

您的两个示例基本上没有视觉差异,但UI太差,无法展示差异。 JPanel正是面板在现实生活中的用途,用于展示其中的内容。它通常用于包含要在给定布局中显示的不同元素。

答案 1 :(得分:3)

  

为什么我应该使用JPanel?

您使用JPanel获得以下一项或多项好处:

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

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

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

答案 2 :(得分:2)

目的是将组件组合在一起。

以此网页为例。您可以想象一个中心面板,其中问题和答案是垂直布局的,右侧面板包含其他面板:一个用于博客,一个用于工作公告,一个用于相关问题,最后一个用于页脚的南面板。

页脚面板可以在问题页面以外的其他页面中重复使用。

如果将页面划分为独立的面板,则整个页面的布局更容易理解和实现。

答案 3 :(得分:2)

您可以在JFrame中放置多个JPanel。 JPanel是您的其他组件的组合者,可以通过逻辑功能对其进行分组。

答案 4 :(得分:2)

您可以使用JPanel创建用户界面的可重用构建块,并为其所有实例维护单点维护。我们假设您要创建一个包含两个文本的差异视图的JFrame。左右视图可以说是同卵双胞胎。更容易创建一个面板两次并在框架上添加这两个面板,而不是直接将所有后续组件两次添加到框架中。

每当你现在必须更改视图时,让我们假设您要添加另一个按钮,或者您可以在面板上执行任何操作 - 两个视图 - 左视图和右视图将立即包含更改。

答案 5 :(得分:2)

将某些组件组合在一起,以便您可以在循环中操作它们的组。也许检查区域内的所有文本框是否满足某个要求或完全销毁它们。