Head First Java(3)——图形用户接口与Swing

12 图形用户接口

事件源发出事件:接受注册、取得用户事件、并在用户采取操作时调用监听的事件处理方法。

监听获知事件:实现接口并向按钮注册(AddAction…)

Event对象(事件对象携带事件信息):回头调用接口上的方法时把它当做参数穿进去,将事件的信息带给监听者。

每个事件类型都有相对应的监听接口。


public void paintComponent(Graphics g){  }

参数g是个Graphics对象,代表它可能是个Graphics的子类。由g参数所引用的对象实际上是个Graphics2D的实例。实际上躲在Graphics引用后面的是个Graphics2D对象。编译器会根据引用的类型而不是实际对象来判定你能够调用哪些方法。


如果你要调用Graphics2D类的方法,就不能直接使用g参数。但可以将它转换成Graphics2D变量。(父类的引用转为子类)

Graphics2D g2d = (Graphics2D) g;

要对事件源注册就调用事件源的注册方法,它的方法一定是add<EventType>Listener这种形式,button.addActionListener(this);


内部类可以使用外部所有的方法与变量,就算是私有的也一样。

内部类的实例一定绑在外部类的实例上


监听非GUI事件的最后结果就跟监听GUI事件是一样的,实现监听者的接口,向事件源注册,等待事件源调用事件处理程序(定义在监听者的接口中的方法)


13 Swing

布局管理器(Layout Managers)是个与特定组件相关联的Java对象

管理器:borderlayout、flow和box

borderlayout:


把背景组件分割成5个区域。每个被管理的区域只能放上一个组件。由此管理员安置的组件不会取得默认的大小。这是框架(JFrame)默认的布局管理器。

(南北先占位)

FlowLayout:


这个管理器的行为跟文书处理程序的版面配置方式差不多。每个组件都会依照理想的大小呈现,并且会从左到右依照加入的顺序以可能会换行的方式排列。这是面板(JPanel)默认的布局管理器。

BoxLayout:


它像FlowLayout一样让每个组件使用默认的大小,并且按照加入的顺序来排列。但BoxLayout是以垂直的方向来排列。

把面板的布局管理器从默认的FlowLayout布局改成BoxLayout布局:

panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS)); ------>它的构造函数需要知道管理哪个组件以及使用哪个轴


question:框架为什么不能像面板那样直接地加上组件?

answer:JFrame这么特殊是因为它是让事物显示在画面上的特点。Swing的组件纯粹由Java构成,JFrame必须要连接到底层的操作系统以便来存取显示装置。把面板想做是安置在JFrame上的100%纯Java层。把JFrame想做是支撑面板的框架。






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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值