java基础知识学习日记8

学习内容:图形用户界面编程的概念,AWT的概念,AWT容器和常见布局管理器,使用AWT基本组件,使用对话框,使用文件对话框,java的事件机制,使用菜单组件,创建并使用右键菜单,重写paint()方法实现绘图,使用Graphics类,使用BufferedImageImageIO处理位图,使用Clipboard,剪切板数据风格,拖放功能

学习笔记:

1AWT出现了如下几个问题:使用AWT作出的图形用户界面在所有的平台上都显得很丑陋,功能也非常有限。②AWT为了迎合所有主流操作系统的界面设计,AWT组件只能使用这些操作系统上图形界面组件的交集,所以不能使用特定操作系统上复杂的图形界面组件,最多只能使用4种字体。③AWT用的是非常笨拙的、非面向对象的编程模式。

2AWT主要提供了如下两种主要的容器类型。①Window:可独立存在的顶级窗口。②Panel:可容纳其他组件,但不能独立存在,必须被添加到其他容器当中。

3、在FlowLayout布局管理器中,组件像流水一样向某方向流动,遇到障碍就折回,重头开始排列。在默认情况下,FlowLayout布局管理器从左向右排列所有组件,遇到边界就会折回下一行重新开始。

4pack()方法时Window容器提供的一个方法,该方法用于将窗口调整到最佳大小,通过java编写图形用户界面程序时,很少直接设置窗口的大小,通常都是调用pack()方法来将窗口调整到最佳大小。

5BorderLayout有如下两个注意点。当向使用BorderLayout布局管理器的容器中添加组件时,需要指定要添加到哪个区域中。如果没有指定添加到哪个区域中,则默认添加到中间区域中。如果向同一个区域中添加多个组件时,后放入的组件会覆盖先放入的组件。

6、如果希望某个组件的大小随容器的增大而增大,则必须同时设置控制该组件的GridBagConstraints对象的fill属性和weightxweighty属性。

7、对话框有如下两点需要注意:对话框通常依赖于其他窗口。对话框有非模式和模式两种,当某个模式对话框打开之后,该模式对话框总是位于它以来的窗口之上,在模式对话框被关闭之前,它依赖的窗口无法获得焦点。

8FileDialog不能指定是模式对话框或非模式对话框,因为FileDialog依赖于运行平台的实现,如果运行平台的文件对话框是模式的,那么FileDialog也是模式的,否则就是非模式的。

9、在时间处理过程中,主要涉及三类对象。事件源:事件发生的场所,通常就是各个组件。事件:事件封装了GUI组件上发生的特定事情。如果程序需要获得GUI组件上所发生事件的相关信息,都通过Event对象来取得。事件监听器:负责监听事件源所发生的事件,并对各种事件做出相应处理。

10AWT事件处理机制是一种委派式事件处理方式---普通组件将事件的处理工作委托给特定的对象;当该事件源发生指定的事件时,就通知所委派的事件监听器,由事件监听器来处理这个事件。

11、事件适配器是监听器接口的空实现----事件适配器实现了监听器接口,并为该接口里的每个方法都提供了实现,这种实现是一种空实现。

12、如果某个监听器接口只有一个方法,则该监听器接口就无须提供适配器,因为该接口对应的监听器别无选择,只能重写该方法!

13、事件监听器是一种特殊的java对象,实现事件监听器对象有如下几种形式:内部类形式:将事件监听器类定义成当前类的内部类。外部类形式:将事件监听器类定义成一个外部类。类本身作为事件监听器类:让当前类本身实现监听器接口或者继承事件适配器。匿名内部类:使用匿名内部类创建事件监听器对象。

14、类本身作为事件监听器类,这种形式非常简洁,但这种做法有两个缺点。这种形式可能造成混乱的程序结构,GUI界面的职责主要是完成界面初始化工作,但此时还需要包含事件处理器方法,从而降低了程序的可读性。如果GUI界面类需要继承事件适配器,将会导致该GUI界面类不能继承其他父类。

15、程序不应该主动调用组件的paint()和update()方法,这两个方法都由AWT系统负责调用。如果程序希望AWT系统重新绘制该组件,调用组件的repaint()方法即可。

16、因为AWT实现依赖于底层运行平台的实现,因此AWT剪切板在不同平台上所支持的传输的对象类型并不完全相同。

17、拖放是非常常见的操作,人们经常会通过拖放操作来完成复制、剪切功能,但这种复制、剪切操作无须剪切板支持,程序将数据从拖放源直接传给拖放目标。这种通过拖放实现的复制、剪切效果也被称为复制、移动。

18AWT已经提供了对拖放源和拖放目标的支持,分别有DragSourceDragTarget两个类来表示。

 

学习内容:Swing编程

学习笔记:

1Swing是由纯java实现的,不再依赖于本地平台的GUI,因此可以在所有平台上保持相同的界面外观。独立于本地平台的Swing组件被称为轻量级组件,而依赖于本地平台的AWT组件被称为重量级组件。

2、使用Swing开发图形界面有如下几个优势。①Swing组件不再依赖于本地平台的GUI,无须采用各种平台的GUI交集,因此Swing提供了大量图形界面组件,远远超出了AWT所提供的图形界面组件集。②Swing组件不再依赖于本地平台GUI,因此不会产生与平台相关的BUG③Swing组件在各种平台上运行时可以保证具有相同的图形界面外观。④Swing组件采用MVC设计模式,其中模型用于维护组件的各种状态,视图是组件的可视化表现,控制器由于控制对于各种事件、组件做出怎样的相应。

3JFrame JWindow JDialog JApplet它们并不是轻量级组件,而是重量级组件。

4Swing组件具有如下4个额外的功能。可以为Swing组件设置提示信息。使用setToolTipTest()方法,为组件设置对用户有帮助的提示信息。很多Swing组件如按钮、标签、菜单项等,除了使用文字外,还可以使用图标修饰自己。支持插拔式的外观风格。支持设置边框。Swing组件可以设置一个或多个边框。

5JScrollPane对于JTable组件尤其重要,通常需要把JTable放在JScrollPane容器中才可以显示出JTable组件的标题栏。

6Swing组件还有如下两个功能。所有Swing组件默认启用双缓冲绘图技术。所有的Swing组件都提供了简单的键盘驱动。

7、调用showXXXDialog方法时还可以指定一个可选的title参数,该参数指定所创建对话框的标题。

8、不要使用JTabbedPaneadd()方法来添加组件,该方法时JTabbedPane重写Containner容器中的add()方法,如果使用该add()方法来添加Tab页面,每次添加的标签页会直接覆盖原有的标签页。

9、向JLayeredPane中添加组件时,必须显示设置该组件的位置和大小,否则该组件不能显示出来。

10JLayer的功能是在指定组件上额外的添加一个装饰层,开发者可以在这个装饰层上进行任意绘制,这样就可以为指定组件添加任意装饰。

你可能感兴趣的:(java基础知识学习日记8)