java swing界面设计

我是新手,怎么布局,最好有代码,谢谢啊,在线等。以解决。... 我是新手,怎么布局,最好有代码,谢谢啊,在线等。
以解决。
展开
 我来答
雪飞潇潇
2015-12-18 · TA获得超过6274个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:864万
展开全部

 GUI图形界面设计的重点是布局 

            SWING也是采用AWT的布局方式,进行布局管理的。(实现LayoutManager接口的方法,来进行管理布局,API中已有实现类,我们通常只需要指定实现类,而不需要自己重写方法)


常用的布局有绝对布局, 边界布局BorderLayout,流布局FlowLayout,表格布局GridLayout。

JFrame等重量级组件,默认布局是边界布局,JPanel轻量级组件,默认布局是流布局


  • 绝对布局:布局的特点,需要指定每个组件的大小,和具体位置。

  1. 优点:充分的自定义,充分的自由,可以写出漂亮的 ,细致的界面

  2. 缺点:绝对布局在不同的操作系统下,会有一些不同程度的变化,导致界面变形,甚至组件重叠等。在同一操作系统下,窗口放大缩小,界面也会变形

  3. 绝对布局的范例


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

public class Frame1 extends JFrame{
JButton jb1;
public Frame1() {
setLayout(null);//指定窗口的布局管理器为空,也就是绝对布局
jb1 = new JButton("按钮");
jb1.setLocation(100, 50);//指定组件的位置
jb1.setSize(80, 30);//指定组件的大小
//jb1.setBounds(100, 50, 80, 30);//上面两句代码等同于这句代码
add(jb1);
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public static void main(String[] args) {
new Frame1().setVisible(true);
}
}
  • 边界布局BorderLayout:它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件

  1. 优点:比较常用的布局,简单易掌握,放大缩小,不影响组件的位置

  2. 缺点:组件位置不够灵活。每个区域如果添加多个组件,那么后面的组件会覆盖前面的组件。(因为可以嵌套其他组件使用,所以这些缺点基本都能克服)

3.   代码参考

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

public class P004_BorderLayout {
JFrame jframe;
JButton jb1,jb2,jb3,jb4,jb5;
public P004_BorderLayout(){
jframe = new JFrame();
jframe.setTitle("边界布局");
jframe.setBounds(300, 200, 180, 180);
jb1 = new JButton("东");
jframe.add(jb1, BorderLayout.EAST);
jb2 = new JButton("西");
jframe.add(jb2,BorderLayout.WEST);
jb3 = new JButton("南");
jframe.add(jb3,BorderLayout.SOUTH);
jb4 = new JButton("北");
jframe.add(jb4,BorderLayout.NORTH);
jb5 = new JButton("中");
jframe.add(jb5);//BorderLayout.CENTER可以省略
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setVisible(true);
}
public static void main(String[] args) {
new P004_BorderLayout();
}
}


  • 流布局FlowLayout:像一排文字一个挨着一个的布局。流布局用于安排有向流中的组件,这非常类似于段落中的文本行。流的方向可以指定。

  1. 优点:可以快速添加组件,不用指定位置,也不用指定边界

  2. 缺点:线性排列 ,外观单调。(嵌套其他布局,可以忽略缺点)

  3. 代码参考

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

public class P003_FlowLayout {
JFrame jframe;
public P003_FlowLayout(){
jframe = new JFrame("流式布局");
for (int i = 1; i <= 5; i++) {
jframe.add(new JButton(i+""));
}
jframe.setLocation(380, 260);
jframe.setLayout(new FlowLayout(FlowLayout.LEFT));//窗口指定位流式布局,方向从左往右
jframe.pack();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setVisible(true);
}
public static void main(String[] args) {
new P003_FlowLayout();
}
}


  • 表格布局GridLayout:它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件。

  1. 优点:组件整齐排列,

  2. 缺点:如果添加的组件数量,和指定的数量不一致,容易导致缺失等

  3. 参考代码

import javax.swing.*;
import java.awt.*;
public class P005_GridLayout {
JFrame jframe;
public P005_GridLayout() {
jframe = new JFrame("表格布局");
jframe.setLayout(new GridLayout(3, 4));//表格布局,3行 4列
for (int i = 0; i <= 12; i++) {
jframe.add(new JButton(i+""));
}
jframe.setLocation(300, 200);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.pack();
jframe.setVisible(true);
}
public static void main(String[] args) {
new P005_GridLayout();
}
}


最后: 布局是一种灵活的东西。你可以一个布局里嵌套另外一个布局。

比如边界布局的窗口的中间,加入按表格布局的组件,表格布局里面是流式布局。

很多的复杂的界面,通过细分,都能拆分成常用布局的嵌套

水边一枪
2012-09-25 · TA获得超过130个赞
知道小有建树答主
回答量:115
采纳率:100%
帮助的人:74万
展开全部
用layout来布局
常用的就是flow layout。
首先,要创建一份frame
frame里德getcontent会拿到一个区域,在里面放上panel
frame.getcontent.add(new JPanel(new FlowLayout()));
然后,在panel里add不同的对象就会按layout的方式排了。
还有常用的layout是borderlayout,分上下左右的。
一般这2个就够用了,有更复杂的药用gridbaglayout,那个很麻烦。
也可以早找第三方的layout。
更多追问追答
追问
新手啊,不明白,求代码啊,呜呜
追答
JFrame f=New JFrame();
JPanel p=New JPanel();
FlowLayout fLayout=New FlowLayout();
f.getContent.add(p);
p.setLayout(fLayout);
p.add(New JButton());
p.add(New JLabel());

f.show();

可以看看效果
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
peihanlin
2012-09-25 · TA获得超过136个赞
知道答主
回答量:86
采纳率:0%
帮助的人:56.9万
展开全部
我比较喜欢把布局设成null(setLayout(null)),这样可以使用绝对的布局方式,通过设置组件大小和location来确定组件的位置
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wwxjse
2012-09-25 · TA获得超过215个赞
知道小有建树答主
回答量:274
采纳率:100%
帮助的人:166万
展开全部
推荐swt,这么在eclipse里面可以拖组件的,可以试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huangsong_2002
2012-09-25 · 超过10用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:41.1万
展开全部
这问的也太笼统了吧。
不过现在谁好手写布局代码啊,你可试试一些工具。
netbeans试试看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式