我即将开始开发一个新的小型应用程序。它将包含大约10个不同的GUI。
使用Netbeans,我可以创建JFrame或JPanel --但是我应该使用哪一个呢?
我将有一个菜单GUI,其中将包含到其余GUI的按钮。我还必须将一些控制器作为参数进行传递
发布于 2013-02-13 22:42:15
我假设您对JPanel和JFrame之间的区别感到有点困惑。JPanel充当容纳其他图形用户界面组件的容器,例如按钮、文本字段和其他JPanels。
另一方面,您可以将JFrame视为顶级组件(主JPanel)。
JFrame
框架是具有标题和边框的顶级窗口。
以下是典型JFrame的图像:

JPanel
JPanel类为轻量级组件提供通用容器。
以下是JPanels的图像。每种颜色代表不同的JPanel

因此,要回答您的问题,您需要同时使用两者。从JFrame (充当主容器)开始,添加JPanels来构建图形用户界面。
我建议您阅读这两个链接,以获得更好的想法并查看代码。
发布于 2013-02-13 22:38:33
10种不同的GUI
有多种选项可用于显示基于JPanel的图形用户界面元素。
CardLayoutJTabbedPane有关组合或显示不同的小部件组的许多其他想法,请参阅The Use of Multiple JFrames, Good/Bad Practice?。
注意:拒绝扩展JFrame或JPanel -相反,只需保留一个引用,并在需要时使用它。
发布于 2013-02-13 22:30:46
JFrame是一个顶级组件。它是应用程序的“皮肤”。JPanels不是顶级容器。它们需要驻留在其他一些顶级容器中。可以将JPanels添加到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);
}}
请注意面板在内容窗格中的显示方式。
https://stackoverflow.com/questions/14855769
复制相似问题