本周学习了第八章节的部分组件及其事件处理
对书本上的知识点总结:
一,通过图形用户界面(GUI),用户可以和程序之间方便地进行交互
这里用到两个包--java.awt(爪哇抽象窗口工具包),,, javax.swing中;
------ Java的组件把类的子类或间接子类创建的对象称为一个组件;
------ Java的把容器的子类或间接子类创建的对象称为一个容器;
------容器类提供了添加()方法,容器可以调用这个方法将组件添加到该容器;
-----容器调用removeAll()方法移掉容器中的全部组件,remove(Component c)方法移掉指定的参数c组件;
-----容器可以作为组件添加到另一个容器,实现容器的嵌套;
-----容器添加或移掉组件时,需让容器调用验证()方法,以保证容器中的组件能正确显示。
二,窗口
JFrame的类的实例是一个底层容器,通常称为窗口
JFrame中有如下方法及常量:
--JFrame(String s)创建标题为s的窗口
--public void setBounds(int a,int b,int width,int height)设置窗口的初始位置是(a,b),单位像素(px),窗口的宽度,高度
--public void setLocation(int width,int height)设置窗口大小
--public void setSize(int x,int y)设置窗口的位置,默认位置(0,0)
--public void setVisible(boolean b)设置窗口是否可见,窗口默认不可见
--public void setResizable(boolean b)设置窗口是否可调整大小,默认可调整大小
--public void dispose()撤销当前窗口,并释放当前窗口所使用的资源
--public void setExtendState(int state)设置窗口的扩展状态,其中参数state取JFrame类中的下列类常量:MAXIMIZED_HORIZ(水平方向最大化),MAXIMIZED_VERT(垂直方向最大化),MAXIMIZED_BOTH(水平,垂直方向都最大化)
--public void setDeafaultCloseOperation(int operation)该方法用来设置单击窗口右上角的关闭图标都,程序会做出怎样的处理。参数operation可取下列静常量:
DO_NOTTHING_ON_CLOSE(隐藏当前窗口),DISPOSE_ON_CLOSE(隐藏当前窗口,并释放窗体占有的其他资源),EXIT_ON_CLOSE(结束窗口所在的应用程序)
三,常用组件及布局
菜单条,菜单,菜单项是窗口常用的组件;
1,创建菜单条:即创建一个JMenuBar的类的实例
----向窗口添加菜单条如下:
setJMenuBar(JMenuBar bar);
注意:只能向一个窗口添加一个菜单条
2,菜单项:创建一个JMenuItem的类的实例
同时可以把菜单看做一个菜单项添加到某个菜单中
3,菜单上的图标:用图标声明一个图标,然后用ImageIcon的类创建一个图标:
Icon icon = new ImageIcon("a.gif");
4,常用组件都是JComponent中的子类:
--- JTextField(文本框)允许输入单行文本
--- JTextArea(文本区)允许输入多行文本
---的JButton(按钮)
--- JLabel(标签)为用户提供信息
--- JCheckBox的(复选框)
---一个JRadioButton(单选按钮)
JComboBox的---(下拉列表)
--- JPasswordField中(密码框)
5,常用容器
--- JPanel的面板,JPanel的面板的默认布局是FlowLayout中布局;
--- JTabbedPane的选项窗格,当用户向JTabbedPane的容器添加一个组件时,JTabbedPane的容器就会自动为该组件指定一个对应的选项卡;
add(String text,Component c);
public JTabbedPane(int tabPlacement);
---滚动窗格JScrollPane,滚动窗格只可以添加一个组件;
---拆分窗格JSplitPane,有水平拆分和垂直拆分两种,拆分线可以移动;
JSplitPane(int a,Component b,Component c);
/*参数a取HORIZONTAL_SPLIT或VERTICAL_SPLIT,决定是水平还是垂直拆分,后两个参数决定要放的组件*/
JSplitPane(int a,boolean b,Component c,Component d);
/*参数a取HORIZONTAL_SPLIT或VERTICAL_SPLIT,决定是水平还是垂直拆分,参数b决定当拆分线移动时,组件是否移动变化,true是连续*/
--- JLayeredPane的分层窗格,当组件经常需要处理重叠问题时,可以将组件添加到分层窗格
6,常用布局
容器可以使用setLayout(布局对象)设置自己的布局
--- FlowLayout布局:FlowLayout()该构造方法可以创建一个居中对齐的布局对象,该布局中的组件默认大小为最佳大小,如需改变最佳大小需调用public void setPreferredSize(Dimension preferedSize)如:
button.setPreferredSize(new Dimension(20,20));
--- BorderLayout布局:可以把容器分为东,南,西,北,中五个区域,每个区域只能放一个组件;
--- CardLayout布局:使用该布局的容器可以容纳多个组件,最先加入容器的是第一张(在最上面),依次向下排序,每次只能显示其中一张,被显示的组件将占据所有的容器空间;
--- GridLayout布局:把容器划分为若干行乘若干列的网格区域,最多可添加m×n个组件,该布局中每个网格都是相同大小并且强制组件与网格的大小相同;
--- null布局:空布局容器可以准确地定位组件在容器中的位置和大小;
--- BoxLayout布局:利用容器嵌套,可以在某个容器嵌入几个盒式容器,达到布局目的;
三,处理事件
1,事件源:能够产生事件的对象
监视器:需要一个对象对事件源进行监视,以便对发生的事件作出处理
处理事件的接口:为了让监视器这个对象能对事件源发生的事进行处理,创建该监视器对象的类必须声明实现相应的接口
2,ActionEvent的事件:文本框,按钮,菜单项,密码框,和单选框都可以触发的ActionEvent事件;
注册监视器:该事件的组件使用方法addActionListener(ActionListener listen)将实现ActionListener接口的类的实例注册为事件源的监视器;
ActionListener接口在java.awt.event包中,该接口只有一个方法public void actionPerformed(ActionEvent e);
ActionEvent类中的方法:常用的有
-------- public Object getSource()该方法是从事件继承的方法,ActionEvent事件对象调用该方法可以获取发生ActionEvent事件的事件源对象的引用;
------- public StringgetActionCommand()调用该方法可以获取发生ActionEvent事件时,和该事件相关的一个“命令”字符串,对于文本框,当发生ActionEvent事件时,默认命令字符串是文本框中的文本;
3,一个ItemEvent事件:选择框,下拉列表都可以出发一个ItemEvent事件;
使用addItemListener(ItemListener listen)将实现ItemListener接口的类的实例注册为事件源的监视器;
ItemListener接口在java.awt.event包中,该接口中只有一个方法public void itemStateChanged(ItemEvent e)
4,的DocumentEvent事件:用户在文本区中的数据发生变化,从而导致文本区中的文本内容发生变化,将导致文本区所维护的文档模型中的数据发生变化,这是文档出发的DocumentEvent事件;
可使用addDocumentListener(DocumentListener listen)将实现DocumentListener接口的类的实例注册为事件源的监视器;
的DocumentEvent接口有三个方法:
public void changedUpdate(DocumentEvent e)
public void removeUpdate(DocumentEvent e)
public void insertUpdate(DocumentEvent e)
5,的MouseEvent事件:任何组件都可以发生鼠标事件;
注册监视器的方法是addMouseListener(MouseListener listener);
----使用的MouseListener接口可以处理一下操作出发的鼠标事件:
(1)事件源上按下鼠标键(2)在事件源上释放鼠标键(3)在事件源上单击鼠标键(4)鼠标进入事件源(5)鼠标退出事件源
的MouseEvent类中有下列几个重要的方法:
getX()获取鼠标在事件源坐标系中的x坐标;
getY()获取鼠标在事件源坐标系中的y坐标;
getModifiers()获取鼠标的左键或右键,左,右键分别用InputEvent类中的常量BUTTON1_MASK和BUTTON3_MASK表示;
更多的方法可查书籍“Java2实用教程”(第5版)耿祥义,张跃平编着245页。
----使用的MouseMotionListener接口处理鼠标事件:在事件源上拖动鼠标和在事件源上移动鼠标;
事件源注册监视器的方法是addMouseMotionListener(MouseMotionListener listener);
的MouseMotionListener接口中有如下方法:
mouseDragged(MouseEvent)当你拖动鼠标时(不必在事件源上),监视器调用接口中的这个方法对事件做出处理;
mouseMoved(MouseEvent)当你在事件源上移动鼠标时,监视器调用接口中的这个方法对事件做出处理。
感悟
本周学习的内容较多,并且需要记忆的较多,实际操作的代码量也增多,需要花费更多的时间去掌握。
学习进度条
代码行数(新增/累计) | 博客量(新增/累计) | 学习时间(新增/累计) | |
目标 | 5000 | 30篇 | 400个小时(24000分钟) |
第八周 | 一千三百〇二分之四百五十三 | 1/7 | 1743分之343 |