Java—图形用户界面
概:本篇说的图形用户界面主要是用awt和Swing组件。(部分API内容来自JDK官方API文档)
Swing中的GUI
- 其主要分为三大类
- 容器类:JFrame,JPanel,JScrollPane
- UI组件类:JLabel,JTextField,JTextArea,JButton,JCheckBox,JRadioButton,JComboBox
- 帮助类:Color,Font,Dimension
框体
框架Frame
- 框架Frame简介可以作为Java中的一个顶级窗口来使用,其是一个带有标题和缩放角的窗口,可以设置自己的标题、边框、菜单、大小等属性。(JFrame窗体在很多方面与其极其相似)
- 默认的Frame对象都是没有大小以及不可见得,需要调用setSize()来设置大小,调用setVisible(true)来设置该窗口可见。
- 构造方法有两种,一种无参的,另一种有参参数为String类型,作为其标题。
- 所属包为java.awt;
- 以下是一些常用的方法
- public void setSize(int width, int height):调整组件的大小,使其宽度为 width,高度为 height。
- public void setBackground(Color c) :设置组件的背景色。 背景色对每个组件的影响各不相同,并且部分受背景色影响的组件在不同的操作系统之间可能有所不同。
- public void setVisible(Bool a) :设置窗体是否可见;
- public void setTitle(String Title) :手动改变窗口名字.
- public void setLocation(int x,int y):将组件移到新位置。通过此组件父级坐标空间中的 x 和 y 参数来指定新位置的左上角。 (单位是像素)
参数:
x - 父级坐标空间中新位置左上角的 x 坐标
y - 父级坐标空间中新位置左上角的 y 坐标 - public void setResizable(Bool a):设置窗体大小是否可调(即是否可用鼠标拖拽调节大小);
- 关闭窗口:Frame通过时间监听的方式去关闭窗口
Frame frame = new Frame();
frame.addWindowListener(
new WindowAdapter()
{
@Override
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
JFrame窗体
- 窗体JFrame简介:与上面的框架Frame非常相似,很多API用法都一样(毕竟是未改写的继承类),不同的也有一些不同。
- 所属包:为java.Swing;
- 修改颜色:JFrame.getContentPane().setBackground(Color c);与Frame不同,其需要多调用一层getContentPane();
- 关闭窗口:JFrame所用的方法是传递参数
- 设置自由布局:setLayout(null);设置窗体的布局为自由布局,允许大多数组件自由调整位置。
JFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
文本与图片的显示输入
JLabel
- JLabel:在用户界面中,该组件通常充当图形或者文字的显示,其构造方法可挂载三个参数,String型的“所显示文字”,Icon型的“所显示图片”,int 型的水平对齐方式。
- 修改显示文字:使用其中的setText(String text) 方法可以修改其显示的文字。
- ** 修改显示图片**:使用其中的setIcon(Icon icon) 方法可以修改显示的图片。
- 得到显示的文字: getText()方法返回该组件显示的字符串。
- 得到显示的图片:getIcon()方法返回该组件显示的图片。
- 更改大小与坐标:public void setBounds(int x, int y, int width, int height)该方法移动组件并调整其大小。由 x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。
JTextField
- JtextField:这是一个文本输入框组件,含参的构造方法是以指定文本作为初始文本显示。
- 获取文本框的内容:getText();
- 设置文本框中的内容:setText(String str);
- 设置文本框中的字体:setFont(Font t);
- 得到文本字段中的列数:getColumns();
JPasswordField
- JPasswordField:作为JtextField的亲兄弟,他们的使用上有很多相似之处,最大的不同在于,JPasswordField所显示的文本会被以点代替,因此其通常被用来做密码输入框。
- 得到文本内容:JPassworldField中的getText方法是过期方法,使用getPassword()来获取其文本内容,这个方法的返回值是一个char型的数组,所以在使用时记得先转化为String型。
按钮
JButton
- JButton:创建一个按钮组件,含参构造方法是将String型参数转化为自身的初始显示文本。
- 设置大小位置:与之前的文本组件类似,都是使用setBounds方法去设置的。
- 设置颜色:与框体相似,都是使用setBackground(Color c);设置的。
- 设置文本:setText(String str);
JCheckBox
- JCheckBox:复选框组件,构造方法里可以有String型参数来决定其初始文本,boolean型参数来决定其初始是否为选中(默认为不选中)。
JRadioButton
- JRadioButton:单选框组件,构造方法里可以有String型参数决定初始文本,boolean型参数来决定其初始是否为选中(默认为不选中)。
- 单选属性构造:由于单选框组件是互斥的,一组选项里选了A的话其他选项就会自动变成不选状态。所以就需要单选组这个组件ButtonGroup是单选组件分组类,创建一个实例化的对象,并将单选框组件的对象用add方法添加进去就好,分组不需要在窗体上定位。不过选项还是需要的。
JComboBox
- JComboBox:下拉框组件,构造方法无参。
- addItem(Object obj):将项添加至项的列表
- getItemAt(int index):返回指定索引位置的列表项
- getSelectedItem():将当前选择的项作为一个对象返回
- getSelectedIndex():返回当前选择项的索引位置
菜单栏
- JMenu:创建JMenu组件作为菜单上的一个选项。其构造函数写上String型参数就是该选项显示的字符串。向其中添加JMenuItem作为子菜单选项,将JMenu添加到菜单栏JMenuBar中以发挥作用。JMenu有一个方法,JMenu.addSeparator();可以给子菜单中加上分割线。
- JMenuItem:创建JMenuItem组件作为一个菜单选项的分选项,其构造函数上写的String型参数就是该选项显示的内容。
- JMenuBar:创建JMenuBar组件作为一个菜单栏,向其中添加JMenu组件,并将其添加到JFrame窗体中(这里使用的是Frame中的setJMenuBar方法),以显示菜单栏。