import javax.swing.*; import java.awt.BorderLayout; import java.awt.event.*; public class JComponentDemo extends JFrame{ JComponentDemo(){ setTitle("JComponentDemo Test"); setSize(500,500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton bt = new JButton("Test"); add(bt,BorderLayout.CENTER); add(new MyComponent(bt),BorderLayout.SOUTH); setVisible(true); } private class MyComponent extends JComponent implements ActionListener { MyComponent(JButton bt){ bt.addActionListener(this); } @Override public void actionPerformed(ActionEvent arg0) { System.out.println("test"); } } public static void main(String[] args){ new JComponentDemo(); } }
这个程序中把listener写到一个组件中,然后add到面板中的方法有点难理解.是自考书上的例题,当然例题中这个组件实现了很多监听接口.但为什么要写成组件,然后在构造方法参数中传入实际的组件,然后给他们添加监听. 很难理解这样做的好处.