close

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
      }
  }
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 阿洲 的頭像
    阿洲

    阿洲程式天地

    阿洲 發表在 痞客邦 留言(0) 人氣()