9

我即将开始开发一个新的小型应用程序。它将包含大约 10 种不同的 GUI。

使用 Netbeans,我可以创建 JFrame 或 JPanel - 但我应该使用哪一个?

我将有一个菜单 GUI,其中将包含其余 GUI 的按钮。我还必须将一些控制器作为参数传递

4

6 回答 6

23

我假设您对 JPanel 和 JFrame 之间的区别有点困惑。JPanel 充当容器来保存其他 GUI 组件,例如按钮、文本字段和其他 JPanel。

另一方面,您可以将 JFrame 视为顶级组件(主 JPanel)。

从本网站和本网站获取的报价和图片。

JFrame

Frame 是一个带有标题和边框的顶级窗口。

下面是一个典型的 JFrame 的图像:

典型的 JFrame

JPanel

该类JPanel为轻量级组件提供通用容器。

以下是 JPanel 的图像。每种颜色代表不同的JPanel

在此处输入图像描述

因此,要回答您的问题,您需要同时使用两者。从一个 JFrame(充当主容器)开始,然后添加 JPanel 来构建您的图形用户界面。

我建议您阅读这两个链接以获得更好的想法并查看代码。

于 2013-02-13T14:42:15.307 回答
1

10 种不同的图形用户界面

有多种选项可用于显示JPanel基于 GUI 的元素。

请参阅使用多个 JFrame,好/坏做法?有关组合或显示不同小部件组的许多其他想法。

NB Resist 扩展JFrame或者JPanel- 而是简单地保留对一个的引用,并根据需要使用它。

于 2013-02-13T14:38:33.100 回答
0

JFrame 是一个顶级组件。它是您应用程序的“皮肤”。JPanel 不是顶级容器。它们需要驻留在其他一些顶级容器中。JPanel 可以添加到 JFrame 的内容窗格中。

我将用一些示例代码解决您的问题。

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.GridLayout;

public class Example extends JFrame implements Runnable
{
    JPanel left; 
    JPanel right;
    public Example()
    {
        super("Two JPanels in here");
        left = new JPanel(){
            public void paintComponent(Graphics g)
            {
                g.setColor(Color.red);
                g.fillRect(0,0,getWidth(), getHeight());
            }
        };
        right = new JPanel(){
            public void paintComponent(Graphics g)
            {
                g.setColor(Color.blue);
                g.fillRect(0,0,getWidth(), getHeight());
            }
        };

    }
    public void run()
    {
        setSize(500,500);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        getContentPane().setLayout(new GridLayout(1,2));
        getContentPane().add(left);
        getContentPane().add(right);
        setVisible(true);
    }
    public static void main(String[] args)
    {
        Example e = new Example();
        javax.swing.SwingUtilities.invokeLater(e);
    }

}

请注意面板在内容窗格中的显示方式。

于 2013-02-13T14:30:46.113 回答
0

这篇文章似乎内容丰富:

概括:

  1. JPanel 用作通用容器,而 JFrame 是通常用于独立应用程序的窗口,如警告窗口或通知窗口。

  2. JPanel 表示用于更复杂的操作或应用程序的区域。

  3. 在 JPanel 中,一个面板可以容纳许多操作,而在 JFrame 中,它可以具有用于不同目的的内部框架。

于 2013-02-13T14:32:11.113 回答
0

读起来好像JFrame 可能比顶层窗口的 JPanel 更灵活。正如@ncmathsadist 所指出的,JPanel 也可以嵌入到 JFrame 中。

于 2013-02-13T14:33:17.543 回答
-1

其中一些答案太详细了。

只需使用 JPanel。

您始终可以将面板放入框架中。您不能在面板中放置框架。

于 2013-02-13T16:28:58.803 回答