java怎么在界面上随意摆放位置?

importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassGUIextendsJFra... import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class GUI extends JFrame implements ActionListener{
private JPanel a;
private JLabel ming; //姓名
private JLabel x; //学籍
private JLabel bei; //备注
private JLabel ai; //爱好
private JLabel xing; //性别
private JTextField wen; //姓名///
private JComboBox xia; //学籍////
private JTextArea yu; //文本域//
private JCheckBox fangx,fangx1,fangx2,fangx3,fangx4,fangx5,fangx6,fangx7,fangx8; //爱好//
private JRadioButton fangxing,fangxing1; //性别//
private JButton cha; //查看//
private JButton bao; //保存////
private JButton chong; //重置///
GUI(){
this.setBounds(100,100,420,320);
a=new JPanel();
ming=new JLabel("姓名:");
a.add(ming);
x=new JLabel("学位:");
a.add(x);
bei=new JLabel("备注:");
a.add(bei);
ai=new JLabel("爱好:");
a.add(ai);
xing=new JLabel("性别:");
a.add(ai);
//学籍
xia=new JComboBox();
xia.addItem("小学");
xia.addItem("初中");
xia.addItem("高中");
xia.addItem("大学");
xia.addItem("中专");
xia.addItem("大专");
a.add(xia);
a.add(xia);
a.add(xia);
a.add(xia);
a.add(xia);
a.add(xia);
///文本域
yu=new JTextArea();
yu.setLineWrap(true);
JScrollPane jp = new JScrollPane();
jp.setViewportView(yu);
a.add(yu);
a.add(jp);
//爱好
fangx=new JCheckBox("语文");
a.add(fangx);
fangx1=new JCheckBox("数学");
a.add(fangx1);
fangx2=new JCheckBox("英语");
a.add(fangx2);
fangx3=new JCheckBox("科学");
a.add(fangx3);
fangx4=new JCheckBox("历史");
a.add(fangx4);
fangx5=new JCheckBox("体育");
a.add(fangx5);
fangx6=new JCheckBox("音乐");
a.add(fangx6);
fangx7=new JCheckBox("思想品德");
a.add(fangx7);
fangx8=new JCheckBox("美术");
a.add(fangx8);
//性别
fangxing=new JRadioButton("男");
a.add(fangxing);
fangxing1=new JRadioButton("女");
a.add(fangxing1);
//按钮
cha=new JButton("查看");
a.add(cha);
bao=new JButton("保存");
a.add(bao);
chong=new JButton("重置");
a.add(chong);
cha.addActionListener(this);
bao.addActionListener(this);
chong.addActionListener(this);
a.setLayout(new FlowLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(a);
this.setVisible(true);
}
public static void main(String[]args){
new GUI();
}
}
理想情况

看到理想中的界面我很欣慰,但是现实情况吧,让我很惆怅
显示情况
展开
 我来答
mikemelon2012
推荐于2017-12-16 · TA获得超过3633个赞
知道大有可为答主
回答量:938
采纳率:87%
帮助的人:389万
展开全部
因为帅被追杀的小哥,又遇到你了,很爱学习啊,呵呵。
废话少讲,正统的Java程序应该在某些Layout,也就是布局的管理之下的,

例如,你现在程序用到的JFrame默认的就是FlowLayout,流式布局管理器,它从左到右,然后从上到下摆放你逐次加入的控件,结果就是你这个效果了。

还有其他布局,常用的有BorderLayout, GridLayout等,你学习一下,然后大致学懂了可以规划一下,这些布局管理器是可以嵌套的,也就是说你可以用一些小面板(比如JPanel)内部使用一种布局,而全局(小面板之间)使用另一种布局,这样就基本能达到你要的效果了。

如果还是不行,放出大招。。。。干脆取消布局管理器,调用setLayout(null),这样你的每个元素默认都定位在容器的(0,0)处,需要调用setLocation(x, y),setBounds(x,y, w,h)等方法来指定坐标,但这样窗口大小调整位置也不会变,经常用在窗口大小不变的界面里。
更多追问追答
追问

您提的那两个我都用了

GridLayout结果

BorderLayout结果

追答
GridLayout是网格布局,需要指定行数和列数;
BorderLayout需要制定“东西南北中”这些参数,
建议你先找本Java的书看看,这样练习效率不高啊。
百度网友c2ac8041
2015-01-20 · TA获得超过880个赞
知道小有建树答主
回答量:468
采纳率:100%
帮助的人:262万
展开全部
windowsbuilder可视化布置界面,你可以试试。新手学界面神器
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小菜垚垚
2015-01-20 · TA获得超过463个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:184万
展开全部
你换一种布局方式,很多种布局,表格布局,边框布局,流布局,你可以去了解换下,我建议你才用网格布局
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式