日期:2014-05-20 浏览次数:20756 次
JButton btnInput = new JButton(); btnInput.setText("输入"); btnInput.addActionListener(inputButtonAction); // 这里的 inputButtonAction 就是一个内部类 Action 的实例 Action inputButtonAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { // 这里内部类可以使用外层类的方法 someFunction(); } }; private void someFunction() { // 可以在这里写点击按钮所执行的操作 }
------解决方案--------------------
就是你改的那些swing程序里实现ActionListener接口后就要实现的actionPerformed方法里的给组件加action listener用到匿名内部类会方便些
public class Frame1 implements ActionListener{
....
public void actionPerformed(ActionEvent e) {
if((e.getSource()==jb1)||(e.getSource()==jb2)){
final JDialog jd1=new JDialog(f,"增加操作员");
jd1.setLayout(new BorderLayout());
final OperatorPane operatorPane = new OperatorPane("操作员信息");
jd1.add(operatorPane,BorderLayout.CENTER);
JButton jb1=new JButton("确定");
JButton jb2=new JButton("取消");
jb1.addMouseListener(new MouseAdapter(){//这里就是一个事件加监听的匿名内部类new 出来的MouseAdapter没有名字
@Override
public void mouseClicked(MouseEvent e) {
jd1.setVisible(false);
//super.mouseClicked(e);
//对话框上的数据添加的表格中
Map<String, Object> values = operatorPane.getValues();
int c = model.getColumnCount();
List<Object> row = new ArrayList<Object>();
for(int i=0;i<c;i++){
String name = model.getColumnName(i);
Object value = values.get(name);
row.add(value);
}
model.addRow(row.toArray());
}
});
其他地方我也不懂有什么方便的
------解决方案--------------------
内部类(Inner Class)
分为(1):Atatic inner class静态内部类
(2)Member inner class成员内部类
(3)Local inner class局部内部类
(4)Anonymous inner class匿名内部类
每种内部类,中调外部类的属性和方法,其他类调这个内部类中的属性和方法,都有很多不同的,当然还有很多相同的,
楼主还是自己网上搜一下,我就不总结了,比较繁琐。