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();
}
}
理想情况
看到理想中的界面我很欣慰,但是现实情况吧,让我很惆怅
显示情况 展开
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();
}
}
理想情况
看到理想中的界面我很欣慰,但是现实情况吧,让我很惆怅
显示情况 展开
3个回答
展开全部
因为帅被追杀的小哥,又遇到你了,很爱学习啊,呵呵。
废话少讲,正统的Java程序应该在某些Layout,也就是布局的管理之下的,
例如,你现在程序用到的JFrame默认的就是FlowLayout,流式布局管理器,它从左到右,然后从上到下摆放你逐次加入的控件,结果就是你这个效果了。
还有其他布局,常用的有BorderLayout, GridLayout等,你学习一下,然后大致学懂了可以规划一下,这些布局管理器是可以嵌套的,也就是说你可以用一些小面板(比如JPanel)内部使用一种布局,而全局(小面板之间)使用另一种布局,这样就基本能达到你要的效果了。
如果还是不行,放出大招。。。。干脆取消布局管理器,调用setLayout(null),这样你的每个元素默认都定位在容器的(0,0)处,需要调用setLocation(x, y),setBounds(x,y, w,h)等方法来指定坐标,但这样窗口大小调整位置也不会变,经常用在窗口大小不变的界面里。
废话少讲,正统的Java程序应该在某些Layout,也就是布局的管理之下的,
例如,你现在程序用到的JFrame默认的就是FlowLayout,流式布局管理器,它从左到右,然后从上到下摆放你逐次加入的控件,结果就是你这个效果了。
还有其他布局,常用的有BorderLayout, GridLayout等,你学习一下,然后大致学懂了可以规划一下,这些布局管理器是可以嵌套的,也就是说你可以用一些小面板(比如JPanel)内部使用一种布局,而全局(小面板之间)使用另一种布局,这样就基本能达到你要的效果了。
如果还是不行,放出大招。。。。干脆取消布局管理器,调用setLayout(null),这样你的每个元素默认都定位在容器的(0,0)处,需要调用setLocation(x, y),setBounds(x,y, w,h)等方法来指定坐标,但这样窗口大小调整位置也不会变,经常用在窗口大小不变的界面里。
更多追问追答
追答
GridLayout是网格布局,需要指定行数和列数;
BorderLayout需要制定“东西南北中”这些参数,
建议你先找本Java的书看看,这样练习效率不高啊。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询