java将JPanel放在JFrame中
我已经做了好几个小时了,我很难受。我有这段代码,它在JFrame中添加了一个JPanel,问题是当我将Frame设置为Free Design
时,它不会显示在框架中。当我将框架设置为Border Layout
时,代码运行良好。我想做的是让它与Free Design
一起工作,在那里我可以随意放置和调整JPanel的大小。下面是将其放置在框架中的代码
canvas = new Canvas();
canvas.setVisible(true);
canvas.setImage(file);
GroupLayout canvasLayout = new GroupLayout(canvas);
canvas.setLayout(canvasLayout);
canvas.setPreferredSize(new Dimension(100, 100));
//canvas.setSize(200,200);
//canvas.setPreferredSize(null);
add(canvas);
revalidate();
当我使用自由设计模式时,我遗漏了什么?以下是构建布局的代码:
private void initComponents() {
jInternalFrame1 = new javax.swing.JInternalFrame();
jInternalFrame1.setVisible(true);
javax.swing.GroupLayout jInternalFrame1Layout = new javax.swing.GroupLayout(jInternalFrame1.getContentPane());
jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout);
jInternalFrame1Layout.setHorizontalGroup(
jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
jInternalFrame1Layout.setVerticalGroup(
jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("PocketShop");
setName("main");
pack();
}
# 1 楼答案
取消JInternalFrame
JInternalFrame适用于JDesktopPane内的儿童。windows中的一种窗口,即所谓的MDI,多文档界面,而不是SDI,单文档界面
使用JPanel而不是Canvas
Canvas是旧的本地平台AWT(一个组件)和Swing(一个JComponent)的JPanel。 您可以在那里覆盖该组件
对于自由设计布局,我将使用NetBeans IDE中的GUI编辑器。我知道,所以不能再帮你了
如果可能,不要使用重新验证
如果手动添加画布,请尝试添加JPanel,并将其设置为自定义创建代码
new Canvas()
或canvas