一个疑惑:关于事件监听、actionPerformed()和fireActionPerformed()方法
看java核心技术第一卷有一段时间了,这次在这本书上又遇到了个问题,麻烦大家给看看。顺便先说一下,我用的是第六版的。我的问题是在第11章,“异常与调试”里遇到的,具体如下:
该书11.2.5节有一个示例代码,意在制造几个不同的错误,并捕获异常。具体代码如下:
public class ExceptTest{ ……} //详细代码可以下载附件
class ExceptTestFrame extends JFrame{……}
class ExceptTestPanel extends Box
{
public ExceptTestPanel()
{
super(BoxLayout.Y_AXIS);
group = new ButtonGroup();
……
addRadioButton("Integer divide by zero", new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
a[1] = 1 / (a.length - a.length);
}
});
……//这里是很多个addRadioButton()方法,就不都举出来了
}
private void addRadioButton(String s, ActionListener listener)
{
JRadioButton button = new JRadioButton(s, false)
{
// the button calls this method to fire an
// action event. We override it to trap exceptions
protected void fireActionPerformed(ActionEvent event) //这个方法就是让我产生疑惑的地方。
{
try
{
textField.setText("No exception");
super.fireActionPerformed(event);
}
catch (Exception e)
{
textField.setText(e.toString());
}
}
};
button.addActionListener(listener);
add(button);
group.add(button);
}
private ButtonGroup group;
private JTextField textField;
private double[] a = new double[10];
}
书上说:“点选按钮的fireActionPerformed方法中捕获actionPerformed方法的异常,并将相应的错误信息显示在文本框中。”
我这里要问的是:fireActionPerformed方法是怎么捕获fireActionPerformed方法中的异常的?
让actionPerformed()和fireActionPerformed()方法都在控制台输出一段文字。结果运行程序时,按下RadioButton时,所有的文字都输出,显然,事件促发时,两个方法都被调用了。
ExceptTest.rar
(1.54 KB)