Java Swing使用侦听器来传递有关事件的通知。
这是Swing类的一段代码
Font font = model.getActivityFont();
activityTextFontButton = new JButton(getFontText(font));
activityTextFontButton.setFont(font);
activityTextFontButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
JFontChooser fontChooser = new JFontChooser();
fontChooser.setSelectedFont(model.getActivityFont());
int result = fontChooser.showDialog(dialog);
if (result == JFontChooser.OK_OPTION) {
Font font = fontChooser.getSelectedFont();
String text = getFontText(font);
model.setActivityFont(font);
activityTextFontButton.setText(text);
activityTextFontButton.setFont(font);
JButton dummy = new JButton(text);
setButtonSizes(activityTextFontButton,
connectorTextFontButton, dummy);
dialog.validate();
dialog.pack();
}
}
});按下该按钮时,JButton类将执行ActionListener的一部分代码。这是因为JButton类具有对ActionListener实例的引用,并且知道要执行的方法是actionPerformed。
Java中还有其他方法可以驱动事件(请参阅Observer / Observed类),但是侦听器是一种非常酷的方式来传递有关事件的通知。