1、內層class可以取用外層class包括private的所有method與變數。
2、內層class只有一個外層class,外層class則可以有不只一個的內層class。
3、一般class是不能實作同個method多次,但是使用內層class之後可以,如果我們想要讓三個按鈕有不同的事件行為,就要使用三個內層class來個別實作ActionListener,也就是自己的 actionPerformed( )。
4、實現兩個按鈕的程式:
public class Mygui{
JFrame frame;
JLabel label;
public static void main(String[ ] args) {
Mygui guitest = new Mygui ( );
guitest.go( );
}
public void go( ){
frame = new JFrame( );
frame .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton labelButton = new JButton ("Change Label");
labelButton.addActionListener(new LabelListener( )); //不傳this,傳對應的實體
JButton colorButton = new JButton ("Change color");
colorButton.addActionListener(new ColorListener( )); //不傳this,傳對應的實體
label = new JLabel("It's a label");
Mypanel paneltest = new Mypanel ( );
frame.getContentPane( ).add(BorderLayout.SOUTH,colorButton);
frame.getContentPane( ).add(BorderLayout.SOUTH,paneltest );
frame.getContentPane( ).add(BorderLayout.SOUTH,labelButton );
frame.getContentPane( ).add(BorderLayout.SOUTH,label );
frame.setSize(300,300);
frame.setVisible(true);
}
class LabelListener implements ActionListener {
public void actionPerformed(ActionEvent event){
label.setText("label is changed"); //內層class取用外層class的成員變數label
}
}
class ColorListener implements ActionListener {
public void actionPerformed(ActionEvent event){
frame.repaint( ); //內層class取用外層class的成員變數frame
}
}
}
留言列表