一个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容器不让他们相互覆盖,该怎样做呢?小弟在线等大神回答
前几天听人说,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容器不让他们相互覆盖,该怎样做呢?小弟在线等大神回答
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();
}}
一个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));
}
}
至于JPanel问题,看一下布局管理器吧。