首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JFrame或JPanel

使用JFrame或JPanel
EN

Stack Overflow用户
提问于 2013-02-13 22:27:55
回答 6查看 22.3K关注 0票数 9

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

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

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-02-13 22:42:15

我假设您对JPanel和JFrame之间的区别感到有点困惑。JPanel充当容纳其他图形用户界面组件的容器,例如按钮、文本字段和其他JPanels。

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

摘自此site和此site的报价和图片。

JFrame

框架是具有标题和边框的顶级窗口。

以下是典型JFrame的图像:

JPanel

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

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

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

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

票数 23
EN

Stack Overflow用户

发布于 2013-02-13 22:38:33

10种不同的GUI

有多种选项可用于显示基于JPanel的图形用户界面元素。

有关组合或显示不同的小部件组的许多其他想法,请参阅The Use of Multiple JFrames, Good/Bad Practice?

注意:拒绝扩展JFrameJPanel -相反,只需保留一个引用,并在需要时使用它。

票数 1
EN

Stack Overflow用户

发布于 2013-02-13 22:30:46

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

我将用一小段示例代码来解决您的问题。

代码语言:javascript
复制
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);
    }

}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14855769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档