当前位置: 首页 > 面试题库 >

为什么我应该使用JPanel?

夹谷晋
2023-03-14
问题内容

之间有什么区别:

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?真正的目的是什么?


问题答案:

为什么我应该使用JPanel?

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

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

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

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



 类似资料:
  • 问题内容: 为什么以及何时应该在php中使用该函数?使用后是否应该始终使用它?我读到我必须使用它来防止会话固定,这是唯一原因吗? 问题答案: 什么啊 就像函数名称所说的那样,它是一个函数,它将用新的ID替换当前的会话ID,并保留当前的会话信息。 它有什么作用? 它主要有助于防止会话固定攻击。会话固定攻击是恶意用户试图利用系统中的漏洞固定(设置)另一个用户的会话ID(SID)的地方。这样,他们将拥有

  • 问题内容: 考虑一下: 一方面,它更干净,更pythonic。另一方面,你将用作第一个参数,但我觉得这很多余和令人困惑。所以我开始怀疑更大的差异… 根据文档: 因此,区别仅在于使用。那么,的重要之处是什么?让我们再次看一下文档: 好。根本没关系 因此,这是重要的部分-确保所有上下文处理器都能正常工作,并重点放在csrf上。所以真的,回到我的第一个示例,这些实际上是相同的: 现在,第二个例子显然更糟

  • 为什幺应该使用流 在node中,I/O都是异步的,所以在和硬盘以及网络的交互过程中会涉及到传递回调函数的过程。你之前可能会写出这样的代码: var http = require('http'); var fs = require('fs'); var server = http.createServer(function (req, res) { fs.readFile(__dirname

  • 我的老师让我这样做,但在评论区我被告知我不应该这样做。 为什么?

  • 问题内容: 一次又一次,我看到Bash在Stack Overflow上使用了答案,而答案被猛烈抨击了,旨在使用这种“邪恶的”构造。为什么这么邪恶? 如果不能安全使用,我应该怎么用呢? 问题答案: 这个问题比眼前的问题还重要。我们将从显而易见的内容开始:具有执行“脏”数据的潜力。脏数据是指尚未重写为XYZ的任何数据;在我们的例子中,它是未格式化的任何字符串,以确保评估安全。 乍看之下,对数据进行消毒

  • 问题内容: FindBugs报告一个错误: 依赖默认编码找到了对将执行字节到字符串(或字符串到字节)转换的方法的调用,并假定默认平台编码是合适的。这将导致应用程序行为在平台之间有所不同。使用备用API并明确指定字符集名称或字符集对象。 我像这样使用FileReader(仅是一段代码): 要更正错误,我需要更改 至 当我使用PrintWriter时,发生了相同的错误。所以现在我有一个问题。什么时候可