GUI
一. Swing
-
常见Swing组件
-
常用布局管理器
a. 绝对布局
使用Contai.setLayout(null);方法取消布局管理器。
使用Component.setBounds(x,y, width, height)方法设置每个组件的大小和位置。
b. 流式布局管理器
FlowLayout类像流一样从左到右摆放组件,知道占据了这一行的所有空间在移向下一行,也可想设置从右向左FlowLayout.RiGht。
c. 边界布局管理器
BorderLayout类,东西南北中布局,将窗体分为五个区域,分别为
东(BorderLayout.EAST),西(BorderLayout.WEST),南(BorderLayout.SOUTH),北(BorderLayout.NORTH),
中(BorderLayout.CENTER)。
d. 网格布局管理器
GridLayout类,网格布局管理器,GridLayout(int 行, int 列,int 水平间距,int 垂直间距),可以不需要间距,只放前两个参数,后两个参数只能有一个为零(以像素为单位)。 -
常用面板
a. JPanel面板
b. JScrollPane面板
在设置界面时,可能会遇到在一个较小的容器窗口中显示一个较大部分的内容的情况,这时可以用JScrollPane面板,JScrollPane面板是带滚动条的面板,他也是一种容器,但JScrollPane面板只能放一个组件并且不能使用布局管理器。如果要使的JScrollPane面板中放置多个组件,就需要先把需要的组件放到JPanel面板中,然后将JPanel面板放到JScrollPane面板中。 -
按钮组件
a. JButton类,是一个按钮public JButton()
public JButton()不带文字和图片的按钮。
public JButton(String text)带文字的按钮。
public JButton(Icon icon)带图片的按钮。
public JButton(String text,Iocn iocn)带图片带文字的按钮。
b. 单选按钮
JRadioButton类是定义单选按钮,可以是带文字的,也可以是带图片的,也可以带文字也带图片。
c. 复选框组件
JCheckBox类
d. JcomboBox下拉列表框
JComboBox组件被称为组合框,它将所有选项折叠收藏在一起,默认显示的是第一个添加的选项。
JComboBox组合框组件分为可编辑和不可编辑两种形式,对于不可编辑的组合框,用户只能在现有的选项列表中进行选择,而对于可编辑的组合框,用户既可以在现有的选项中选择,也可以自己输入新的内容。需要注意的是,自己输入的内容只能作为当前项显示,并不会添加到组合框的选项列表中。
e. 下拉菜单
JMenuBar(菜单栏): JMenuBar表示一个水平的菜单栏,它用来管理菜单,不参与同用户的交互式操作。菜单栏可以放在容器的任何位置,但通常情况下会使用顶级窗口(如JFrame、JDialog)的setJMenuBar(JMenuBar menuBar)方法将它放置在顶级窗口的顶部。
JMenu(菜单):JMenu表示一个菜单,它用来整合管理菜单项。菜单可以是单一层次的结构,也可以是多层次的结构。大多情况下,使用JMenu(String text)构造函数创建JMenu菜单,参数text表示菜单上的文本。
JMenuItem(菜单项):JMenuItem表示一个菜单项,它是菜单系统中最基本的组件。和JMenu菜单一样,在创建JMenuItem菜单项时,通常会使用JMenumItem(String text)这个构造方法为菜单项指定文本内容。
JMenuItem继承自AbstractButton类的,因此可以把它看成是一个按钮,如果使用无参的构造方法创建了一个菜单项,则可以调用从AbstractButton类中继承的setText(String text)方法和setIcon()方法为其设置文本和图标。
f. 弹出式菜单
创建了一个JPopupMenu菜单,其增加了refreshItem、createItem和exitItem三个JMenuItem菜单项,菜单项在默认情况下是不可见的,所以要通过调用show(Component invoker,int x,int y)方法将菜单项显示出来,参数invoker表示JPopupMenu菜单显示位置的参考组件,x和y表示invoker组件坐标空间中的一个坐标,显示的是JPopupMenu菜单的左上角坐标。为exitItem菜单项添加了一个ActionListener事件监听器,当点击它时,会退出程序。代码的第24到31行代码为当前窗口添加了一个鼠标事件监听器,监听鼠标的mouseClicked事件,当鼠标按下时,调用MouseEvent的getButton()判断是否按下了鼠标的右键(BUTTON3),如果是就调用JPopupMenu的show()方法将其显示,并将鼠标点击的坐标作为弹出菜单的左上角坐标。
5. 文本组件
a. 文本框
JTextField类
b. 密码框
JPasswordField类 其中
JPasswordField sp= new JPasswordField();
Sp.setEchoChar(‘#’);设置回显字符。
c. 文本域
JTextArea类
6. 常用事件监听器
a. 窗体事件
WindowEvent用于表示这些窗体事件,在应用程序中,当对窗体事件进行处理时,首先需要定义一个类实现WindowListener接口作为窗体监听器,然后通过addWindowListener()方法将窗体对象与窗体监听器绑定。
b. 鼠标事件
MouseEvent类用于表示鼠标事件,几乎所有的组件都可以产生鼠标事件,鼠标事件包括鼠标按下、鼠标松开、鼠标单击等。
对鼠标事件的处理可通过实现MouseListener接口或者继承适配器MouseAdapter类,然后调用addMouseListener()方法将监听器绑定到事件源对象。
c. 键盘事件
键盘操作也是最常用的用户交互方式,例如键盘按下、释放等,这些操作被定义为键盘事件。
KeyEvent类表示键盘事件,处理KeyEvent事件的监听器对象需要实现KeyListener接口或者继承KeyAdapter类。
d. 动作事件
在Java中,动作事件用ActionEvent类表示,处理ActionEvent事件的监听器对象需要实现ActionListener接口,但监听器对象在监听动作时,不会像鼠标事件一样处理鼠标个别的移动和单击的细节,而是去处理“按钮按下”这样“有意义”的事件。