为什么这里设置了contentPane.setLayout(new GridLayout(8,1)); 却显示的是2列呢? 求java高手赐教

importjava.awt.*;importjavax.swing.*;publicclassSS{publicvoidgo(){JFramejf=newJFrame(... import java.awt.*;
import javax.swing.*;
public class SS {

public void go(){
JFrame jf=new JFrame("kl");
Container contentPane=jf.getContentPane();
contentPane.setLayout(new GridLayout(8,1));
JLabel jl=new JLabel("大学生调查问卷",JLabel.CENTER);
//JPanel p=new JPanel();

JLabel j1=new JLabel("你最喜欢的运动?",JLabel.LEFT);
JCheckBox b1=new JCheckBox("足球",true);
JCheckBox b2=new JCheckBox("篮球");
JCheckBox b3=new JCheckBox("羽毛球");
JLabel j2=new JLabel("你的性别",JLabel.LEFT);
JRadioButton jb1=new JRadioButton("男",true);
JRadioButton jb2=new JRadioButton("女");
jf.setVisible(true);
jf.setSize(200,200);
ButtonGroup bg=new ButtonGroup();
bg.add(jb1);bg.add(jb2);
contentPane.add(jl,"North");
//contentPane.add(p,"Center");
contentPane.add(j1);
contentPane.add(b1);
contentPane.add(b2);
contentPane.add(b3);
contentPane.add(j2);
contentPane.add(jb1);
contentPane.add(jb2);
JPanel p2=new JPanel();
JButton j=new JButton("提交");
p2.add(j);
contentPane.add(p2,"South");

}
/**
* @param args
*/
public static void main(String[] args) {
SS s=new SS();
s.go();
// TODO Auto-generated method stub

}
}
展开
 我来答
紫薇参星
科技发烧友

推荐于2018-05-04 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3581万
展开全部
这是因为你在contentPane上用了两种布局方式:GridLayout和BorderLayout,
contentPane.setLayout(new GridLayout(8,1));和contentPane.add(jl,"North");
系统不知道用哪种布局方式。
你把contentPane用BorderLayout布局方式,把JPanel p=new JPanel();用GridLayout
布局方式,就行了。
改完后的程序如下:(改动的地方见注释)
import java.awt.*;
import javax.swing.*;
public class SS {
public void go(){
JFrame jf=new JFrame("kl");
Container contentPane=jf.getContentPane();
contentPane.setLayout(new BorderLayout()); //这里new GridLayout(8,1)改成new BorderLayout();
JLabel jl=new JLabel("大学生调查问卷",JLabel.CENTER);
JPanel p=new JPanel();//这句去掉注释
p.setLayout(new GridLayout(8,1));//这里加一句
JLabel j1=new JLabel("你最喜欢的运动?",JLabel.LEFT);
JCheckBox b1=new JCheckBox("足球",true);
JCheckBox b2=new JCheckBox("篮球");
JCheckBox b3=new JCheckBox("羽毛球");
JLabel j2=new JLabel("你的性别",JLabel.LEFT);
JRadioButton jb1=new JRadioButton("男",true);
JRadioButton jb2=new JRadioButton("女");
jf.setVisible(true);
jf.setSize(200,200);
ButtonGroup bg=new ButtonGroup();
bg.add(jb1);bg.add(jb2);
contentPane.add(jl,"North");
contentPane.add(p,"Center");//这句去掉注释
p.add(j1);//这里contentPane.add(j1);改成p.add(j1);
p.add(b1);//这里contentPane.add(b1);改成p.add(b1);
p.add(b2);//这里contentPane.add(b2);改成p.add(b2);
p.add(b3);//这里contentPane.add(b3);改成p.add(b3);
p.add(j2);//这里contentPane.add(j2);改成p.add(j2);
p.add(jb1);//这里contentPane.add(jb1);改成p.add(jb1);
p.add(jb2);//这里contentPane.add(jb2);改成p.add(jb2);
JPanel p2=new JPanel();
JButton j=new JButton("提交");
p2.add(j);
contentPane.add(p2,"South");
}
public static void main(String[] args) {
SS s=new SS();
s.go();
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式