201711671229 《Java程序设计》第八周学习总结

本周学习了第八章节的部分组件及其事件处理

对书本上的知识点总结:

一,通过图形用户界面(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)当你在事件源上移动鼠标时,监视器调用接口中的这​​个方法对事件做出处理。

感悟

本周学习的内容较多,并且需要记忆的较多,实际操作的代码量也增多,需要花费更多的时间去掌握。

 

学习进度条

 代码行数(新增/累计)博客量(新增/累计)学习时间(新增/累计)
目标500030篇400个小时(24000分钟)
第八周一千三百〇二分之四百五十三1/71743分之343

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值