我即将开始开发一个新的小型应用程序。它将包含大约 10 种不同的 GUI。
使用 Netbeans,我可以创建 JFrame 或 JPanel - 但我应该使用哪一个?
我将有一个菜单 GUI,其中将包含其余 GUI 的按钮。我还必须将一些控制器作为参数传递
我假设您对 JPanel 和 JFrame 之间的区别有点困惑。JPanel 充当容器来保存其他 GUI 组件,例如按钮、文本字段和其他 JPanel。
另一方面,您可以将 JFrame 视为顶级组件(主 JPanel)。
JFrame
Frame 是一个带有标题和边框的顶级窗口。
下面是一个典型的 JFrame 的图像:
JPanel
该类
JPanel
为轻量级组件提供通用容器。
以下是 JPanel 的图像。每种颜色代表不同的JPanel
:
因此,要回答您的问题,您需要同时使用两者。从一个 JFrame(充当主容器)开始,然后添加 JPanel 来构建您的图形用户界面。
我建议您阅读这两个链接以获得更好的想法并查看代码。
10 种不同的图形用户界面
有多种选项可用于显示JPanel
基于 GUI 的元素。
CardLayout
JTabbedPane
请参阅使用多个 JFrame,好/坏做法?有关组合或显示不同小部件组的许多其他想法。
NB Resist 扩展JFrame
或者JPanel
- 而是简单地保留对一个的引用,并根据需要使用它。
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);
}
}
请注意面板在内容窗格中的显示方式。
这篇文章似乎内容丰富:
概括:
JPanel 用作通用容器,而 JFrame 是通常用于独立应用程序的窗口,如警告窗口或通知窗口。
JPanel 表示用于更复杂的操作或应用程序的区域。
在 JPanel 中,一个面板可以容纳许多操作,而在 JFrame 中,它可以具有用于不同目的的内部框架。
它读起来好像JFrame 可能比顶层窗口的 JPanel 更灵活。正如@ncmathsadist 所指出的,JPanel 也可以嵌入到 JFrame 中。
其中一些答案太详细了。
只需使用 JPanel。
您始终可以将面板放入框架中。您不能在面板中放置框架。