用户图形化编程接口(GUI)布局要点

来源:互联网 发布:node服务器优点 编辑:程序博客网 时间:2024/06/16 15:41

GUI  

Graphic User Interface 用户图形化编程接口

AWT:重量级,依赖底层系统界面的实现

包:java.awt.*;  1.0  

Swing:1.2出现,轻量级实现,纯java编写的界面,在AWT的基础上发展起来(一般Swing中的类以J开头

包:javax.swing.*  1.4 javax 是对java的扩展

组件   swing

布局  事件  awt

组件 (控件) : 按钮  输入框   单选框  复选框  文本 等....

容器: 承载组件

JFrame 窗口

JPanle 面板

//创建窗体对象

Jframe frm = new Frame();

//设置宽高,单位是像素

from.setSize(400,400);

//设置x抽和y轴

from.setLocation(10,10);

//设置宽高和x,y

frm.setBounds(50,50,400,400);

//设置背景(注意先获得内容面板,否则颜色被内容面板挡住)

frm.getContentPane().setBackground(Color.YELLOW);

//设置标题

from.setTitle("第一个窗体");

//设置窗体图标(图片放在项目路径下的image文件夹)

ToolKit toolkit =frm.getToolKit;

frm.setIconImage(toolkit.getImage("image/title.jpg"))

//设置窗体关闭,程序关闭

frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


//窗体居中的算法:屏幕宽度减去窗体宽度再除以2得到窗体的x坐标,屏幕高度减去窗体的高度再除以2得到窗体的y坐标

Dimension d=toolkit.getScreenSize();

frm.setLocation((int)(d.getWidth()-frm.getWidth)/2,(int)(d.getHeight()-frm.getHeight)/2)


frm.setLocationRelativeTo(null);//窗体居中

//打开窗体

from.setVisible(true);


1、布局:Layout

每个容器都有一个布局管理器 LayoutManager

我们可以通过为容器设置不同的布局管理器  实现不同的布局方式

A. BorderLayout(边框布局) JFrame的默认布局管理器

会改变控件的原有大小

意味着  在borderLayout下设置控件大小是无效的

通过add方法向容器中添加组件的时候,默认是向Center添加

可以通过BorderLayout的常量(东西南北中)设置位置

jf.add(btn1, BorderLayout.CENTER);

B. FlowLayout(流式布局)JPanel 的默认布局管理器

特点是:水平居中排列  一行放不下后  会自动换行居中  

从左向右排列

不会改变控件的大小


C. GridLayout(网格布局)

总是先尽量满足行数

new GridLayout(m,n)

  8 8

m 是固定的

8

k个控件  放到 容器中

17

  满足  m * x >= k 的 x 的最小值

8x  >= 17     

x 列的个数

3

D .卡片布局:

定义N多卡片

CardLayout cl = new CardLayout();

frm.setLayout(cl)

Container c=frm.getContentPane();//注意:这里不能将控件直接加到Jframe中,必须加到内容面板!!

c.add(new JLabel("a",Label.CENTER),"first")

c.add(new JLabel("b",Label.CENTER),"second")


cl.show(c,"first")//显示第一张

cl.next(c)//显示下一张

//轮播

for循环中调用显示下一张方法

E .绝对定位(null)

控件对象.setBounds(x,y,width,height),所有控件的起点坐标和宽度高度都要直接指定!


2、常用的控件

2-1、form中的控件

表单组件

文本框

JTextField 

单选框

JRadioButton 

复选框

JCheckBox 

密码框

JPasswordField 

下拉框

JComboBox 

文本域

JTextArea 

文本标签

JLabel 

按钮

JButton 

2-2  panel

JPanel

JScrollPane

JSplitPane

JTabbedPane

JOptionPane

JMenu 

JMenuBar 

JMenuItem 

JTable 

JTree 

事件

ActionListener

2 0
原创粉丝点击