12 图形用户接口 & 13 Swing

本文深入探讨了图形用户界面(GUI)编程的关键概念和技术,包括事件监听机制、内部类的应用以及Swing组件的使用方法。介绍了如何通过实现监听接口来响应用户交互,并详细解释了内部类如何帮助简化代码结构。此外,还概述了Swing组件与容器的管理方式及常见的布局管理器,如BorderLayout、FlowLayout和BoxLayout。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

页码:353-398 & 399-428

12 图形用户接口

2018-07-26 09:18:34
看图说故事

事件的监听

监听接口是个介于监听(你)与时间源(按钮)间的桥梁。

事件源(例如按钮)会在用户做出相关动作时(按下按钮)产生事件对象。

取得按钮的ActionEvent
- 实现ActionListener这个接口。
- 向按钮注册(告诉它你要监听事件)。
- 定义事件处理的方法(实现接口上的方法)。

多重监听

### 内部类
一个类可以嵌套在另一个类的的内部。

内部类可以使用外部所有方法与变量,就算是私有的也一样。
内部类把存取外部类的方法和变量单做是开自家冰箱。


内部的类对外部的类有一张特殊的通行证,能够自由地存取它的内容,就算是私用的内容也一样。
内部类可以使用外部的变量:

class MyOuterClass{

  private int x;

  class MyInnerClass{
    void go(){
      x=42;
    }
  }
}

内部类的实例一定会绑定在外部类的实例上*。
内部对象与外部对象有发生过超友谊的关系。

内部类实例

如果你从外部类程序代码中初始化内部的类,此内部类对象会绑在该外部对象上。

class MyOuter{
  private int x;  //外部有个私用的x实例变量

  MyInner inner = new MyInner();  //创建内部实例

  public void doStuff(){
    inner.go();//调用内部方法
  }
  class MyInner{
    void go(){
      x=42;//内部可以使用外部的x变量
    }
  }
}

13 Swing

组件与容器

组件(component,或称元件)是比我们之前所称的wiget更为正确的术语。他们就是你会放到GUI上面的东西。事实上所有的组件都是继承自 javax.swing.JComponent。

组件是可以嵌套的
在Swing中,几乎所有组件都能够安置其他的组件。

创建GUI四个步骤的回顾:

//(1)创建window(JFrame)
JFrame frame = new JFrame();

//(2)创建组件
JButton button = new JButton("click me");

//(3)把组件加到frame上。
frame.getcontentPane().add(BorderLayot.EAST,button

//(4)显示出来
frame.setSize(300,300);
frame.setVisible(true);

布局管理器(Layout Managers)
布局管理器是个与特定组件相关联的Java对象,它大多数是个背景组件。布局管理器用来控制所关联组件上携带的其他组件。例如,框架带有面板,面板带有按钮,则框架的布局管理器控制面板的大小和位置,面板的控制管理器控制按钮的大小和位置。

携带的意思就是加入到上面

myPanel.add(button);

世界三大首席管理器:border、flow和box

BorderLayout会把背景组件分割成5割区域。

FlowLayout从左到右排列,有必要时会换行。

BoxLayout从上到下每行一个。

BorderLayout南北会先占位,所以东西的高度还要扣除南北的高度。

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

框架默认时使用BoxLayout布局,面板默认使用FlowLayout布局。
可以调用setLayout来改变面板的布局管理器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值