Java第十一章GUI编程(上)

关于swing的概述

Java中的swing包是用来专门设计GUI的工具包,而一个图形界面一般由各种类型的元素组成,这些元素在Java中称为组件。

组件可以分为两大类:容器和功能组件。而每个容器也是组件,是一种可以包含组件的特殊组件。

1.容器组件

功能组件不能独立地显示出来,必须将组件放在一定的容器(container)中才可以显示出来。
容器可以容纳多个组件,通过调用容器的add(Component comp)方法向容器中添加组件。

窗口(JFrame)和面板(JPanel)是最常用的两个容器。

2.容器

2.1JFrame

此类一般用来继承来创建一个窗体。
可以调用以下几种方法来对窗体进行设置

void setSize(int width, int height)//设置大小
void setVisible(boolean b)//设置出现的位置
void setTitle(String title)//设置窗口的标题
void setResizable(boolean resizable)
void setLocation(int x,int y)
void setLocationRelativeTo(null);
void setDefaultCloseOperation(int operation)
void dispose()

2.2Panel

这是一种面板,可以给它添加一些其他的组件,例如功能组件,也可以对它进行布局管理设置。以下是它的几种常见布局。

(1)流式布局(FlowLayout)

FlowLayout布局管理器是流式布局管理器,它将组件按照从左到右、从上到下的顺序来安排,并在默认情况下使组件尽量居中放置。FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行。
不改变组件的大小,按组件原有尺寸显示组件,可设置不 同的组件间距,行距以及对齐方式。

构造方法

new FlowLayout(FlowLayout.RIGHT,20,40);右对齐,组件之间水平间距20个像素,垂直间距40
个像素。
new FlowLayout(FlowLayout.LEFT);左对齐,水平和垂直间距为缺省值(5)。
new FlowLayout();使用缺省的居中对齐方式,水平和垂直间距为缺省值(5)。
(2)边界布局管理(BorderLayout)

BorderLayout布局管理器只允许在容器内放置5个组件,这5个组件的位置是由BorderLayout类中的North、South、East、West和Center5个常量来确定的,他们对应着容器中的上下左右中,用法如下:

this.add(new Button(“按钮”) ,BorderLayout.NORTH);
this.add(new Button(“按钮”) ,BorderLayout.CENTER);

组件在BorderLayout中的大小都是可以改变的。一般情况下可以让中间区域大一些,而且可以只用其中几个区域。
BorderLayout将整个容器的布局划分成东(EAST)西(WEST)南(SOUTH)北(NORTH)中(CENTER)五个区域,组件只能被添加到指定的区域。如不指定组件的加入部位,则默认加入到CENTER区。每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖。BorderLayout型布局容器尺寸缩放原则:
1.北、南两个区域在水平方向缩放。
2.东、西两个区域在垂直方向缩放。
3.中部可在两个方向上缩放。

(3)、矩形网格布局GridLayout

GridLayout布局管理器是矩形网格,在网格中放置组件,每个网格的高度和宽度都相等,组件随着网格的大小而在水平和垂直方向上拉伸,网格的大小是由容器的大小和创建网格的多少来确定的。其用法如下:
this.setLayout(new GridLayout(2 , 3)); //创建一个2行3列的网格
this.add(new Button(“按钮”));
当组件数目大于网格数时,GridLayout保持行数不变而自动增加列数。GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。
组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下。
在 GridLayout 构造方法中指定分割的行数和列数。

3.常用的组件

3.1标签

构造函数:

JLabel() 创建一个空的标签
JLabel(String text) 创建一个带文本的标签

方法:

void setText(String text) 设置标签上的文本
String getText() 获得标签上的文本
setFont(new Font(“宋体”,Font.BOLD, 18)); 设置字体

3.2单行文本和多行文本

单行文本(JTextField)
JTextField的构造函数:

JTextField(int columns)

方法:

void setText(String text) 设置文本框中的文本
String getText() 获得文本框中的文本

多行文本框(JTextArea)
构造函数:

JTextArea(int rows, int columns) 创建一个指定行数和列数的空文本域

方法:

void setText(String text) 设置文本域中的文本
String getText() 获得文本域中的文本
void setFont(Font font) 设置文本域中文本的字体
void setLineWrap(boolean wrap) //是否自动换行,默认false
如果需要文本区自动出现滚动条,可将文本区对象放入滚动窗格(JScrollPane):
JScrollPane scrollPane = new JScrollPane(txtArea);
add(scrollPane );

3.3密码框

JPasswordField
构造函数:

JPasswordField(String text)
JPasswordField(String text, int columns)

方法:

char[] getPassword()

3.4按钮

构造方法:

JButton(String text) 创建一个带文本的标签

方法:

void setBackground(Color bg) 设置按钮的背景色
void setEnabled(boolean b) 设置启用(或禁用)按钮,由参数b决
定
void setToolTipText(String text) 设置按钮的悬停提示信息

3.5菜单栏组件:

构造方法:JMenuBar();
方法:add(menu); 向菜单栏添加菜单
菜单组件:
构造方法:JMenu(“菜单名称");
方法:add(menuItem); 向菜单添加菜单选项
菜单项组件:
构造方法:JMenuItem(“菜单项名称");
将菜单栏添加到窗口
setJMenuBar(menuBar);

你可能感兴趣的:(java,开发语言)