java中匿名内部类实现接口_java中的匿名内部类是成员内部类吗?我就很不明白为什么造一个接口的时候匿名内部类是怎么去实现接口的...

展开全部

内部类分为四种:

静态e68a8462616964757a686964616f31333337623463内部类(static inner classes)

成员内部类(member inner classes)

局部内部类(local inner classes)

匿名内部类(anonymous inner classes)

所以匿名内部类不是成员内部类.

匿名内部类没有类名,没有class关键字也没有extends和implements等关键字修饰。

匿名内部类会隐式地继承一个父类或实现一个接口。

有些接口实现类,往往就需要用一次, 所以不需要名字,代码显得简洁import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class ChangFrameDemo extends JFrame {

JPanel jp1, jp2;//2个JPanel对象

JButton jb1;

boolean flag;//用于判断是打开第1还是第2个JPanel

public ChangFrameDemo() {

jp1 = new JPanel();

jp1.add(new JLabel("信息录入"));

jp1.setBackground(Color.YELLOW);

jp2 = new JPanel();

jp2.add(new JLabel("信息查询"));

jp2.setBackground(Color.LIGHT_GRAY);

jb1 = new JButton("切换内容");

JPanel jp3 = new JPanel();

jp3.add(jb1);

add(jp1);

add(jp3, BorderLayout.SOUTH);

setTitle("切换内容窗口");

setSize(380, 300);

setLocationRelativeTo(null);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(true);

//第一种写法,写一个类继承于ActionListener 然后实现它的方法

//MyActionListener ma = new MyActionListener();

//jb1.addActionListener(ma);

//下面是第二种方法

jb1.addActionListener(new ActionListener() {//事件响应

@Override

public void actionPerformed(ActionEvent e) {

Container pane = jb1.getRootPane().getContentPane();//得到JFrame的底层Pane

flag = !flag;

if (flag) {

pane.remove(jp1);//删除jp1

pane.add(jp2);//添加jp2

} else {

pane.remove(jp2);

pane.add(jp1);

}

pane.validate();//重构界面

pane.repaint();//重新绘制

}

});

}

public static void main(String[] args) {

new ChangFrameDemo();

}

//第一种写法需要的类

class MyActionListener implements ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

Container pane = jb1.getRootPane().getContentPane();//得到JFrame的底层Pane

flag = !flag;

if (flag) {

pane.remove(jp1);//删除jp1

pane.add(jp2);//添加jp2

} else {

pane.remove(jp2);

pane.add(jp1);

}

pane.validate();//重构界面

pane.repaint();//重新绘制

}

}

}

如果JDK升级到8.0 还支持更简洁的Lambda表达式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值