JFrame对象中添加JPanel容器的困惑

WCliverpool 2010-09-26 03:49:50
一个JFrame容器中究竟可以加几个JPanel容器?有的书上说是可以加好多个的,可是小弟昨天发现如果直接添加JPanel容器到JFrame容器中的话,就会发生容器覆盖的问题。请问这究竟是怎么回事?还有啊,关于这两个容器的区别我也不是很清楚。
前几天听人说,JFrame容器是顶级容器,JPanel不是,但是JFrame容器不能直接添加大部分组件,必须借助2级容器JPanel的帮助。但是小弟今天又在书上看到这样的代码:



import javax.swing.JFrame;
import javax.swing.JButton;


public class Jframe{

Jframe(){
JFrame jf=new JFrame("my frame");
JButton b=new JButton("my button1" );

jf.add(b);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);

}
public static void main(String[] args)

{new Jframe();
}


}
请问,JFrame容器到底可以直接加JButton组件吗?还有,如果我想在一个JFrame容器内加两个JPanel容器不让他们相互覆盖,该怎样做呢?小弟在线等大神回答


...全文
1309 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
eXeSP 2010-09-26
  • 打赏
  • 举报
回复
请参看setLayout方法,布局管理器
ZPH2254 2010-09-26
  • 打赏
  • 举报
回复
先把布局弄好,就可以添加多过JPanel
Luke_K 2010-09-26
  • 打赏
  • 举报
回复
使用布局管理器。不过GUI将来很少用,了解即可
yakai 2010-09-26
  • 打赏
  • 举报
回复
JPanel是可以嵌套的,顶层就一个。java可以拖拖拉拉图形界面插件都很烂,没个好用的。
jiangzhengyou 2010-09-26
  • 打赏
  • 举报
回复
个人认为,JFrame这类的,你可以上网下一个可以图形界面插件,在里面拖拖拉拉,就好了,然后也可以在后台给代码,这样又节省时间,又提高效率,而且又不容易错。。。
xiaochun91103 2010-09-26
  • 打赏
  • 举报
回复
JFrame是顶层容器,小控件都可以直接加在上面。
至于JPanel问题,看一下布局管理器吧。
lijiemissfei 2010-09-26
  • 打赏
  • 举报
回复
首先告诉你JFrame里面是可以直接添加控件的。不过一般是放一个JPanel进去。所有的控件放到Jpanel中。
一个JFrame中可以添加N个JPanel的。不覆盖你要为容器设置布局。有流布局,卡片布局……等等。你根据自己的想要的效果来设定布局。
public class Test {
public static void main(String [] args){
JFrame frame=new JFrame("我是最大的");
frame.setVisible(true);
frame.setSize(400,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p1=new JPanel();
JButton bt=new JButton("我是JFrame上的Button");
p1.add(new JButton("我是第一个面板"));
JPanel p2=new JPanel();
p2.add(new JButton("我是第二个面板"));
frame.setLayout(new GridBagLayout());
Border border1 = BorderFactory.createEtchedBorder(EtchedBorder.RAISED, Color.white, new Color(165, 163, 151));

Border border2 = new TitledBorder(border1, "num1"); //模块号
Border border3 = new TitledBorder(border1, "num2"); //BSC局向

p1.setBorder(border2);
p2.setBorder(border3);

frame.add(p1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,
GridBagConstraints.BOTH, new Insets(2, 5, 2, 5), 0, 0));
frame.add(p2,new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER,
GridBagConstraints.BOTH, new Insets(2, 5, 2, 5), 0, 0));
frame.add(bt,new GridBagConstraints(0, 1, 1, 2, 0.0, 0.0, GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE, new Insets(2, 5, 2, 5), 0, 0));
}
}
dapenge 2010-09-26
  • 打赏
  • 举报
回复
看看布局管理器 left right top bottom 可以共存的
eggno8 2010-09-26
  • 打赏
  • 举报
回复
我也是新学swing的:

import javax.swing.*;
import java.awt.GridLayout;

public class Jframe {

Jframe() {
GridLayout layout = new GridLayout(1, 2);
JFrame jf = new JFrame("my frame");
jf.setBounds(100, 100, 200, 100); //大小坐标还是搞一个吧
JButton b1 = new JButton("my button1");
JButton b2 = new JButton("my button2");
jf.getContentPane().setLayout(layout); //可以先设置下布局,这里是1行2列
jf.getContentPane().add(b1); //往jf里面放东西,先取它的贴身容器,就好像电饭煲的里面那层。那才是装东西的。
jf.getContentPane().add(b2);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);

}

public static void main(String[] args)

{
new Jframe();
}

}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧