単純なプログラムを書換えよう(Java編)−インナークラス

アウタークラスではクラスViewとクラスMainを別々に定義しましたが,クラスViewをクラスMainの中に定義することも可能です.

//Main.java
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;

public class Main{
  class View extends WindowAdapter implements ActionListener{
    private Label value=new Label("0");
    
    public View(){
      Frame frame=new Frame();
      Panel buttons=new Panel();
      Button inc=new Button("inc");
      Button dec=new Button("dec");
      buttons.add(inc);
      buttons.add(dec);
      inc.addActionListener(this);
      dec.addActionListener(this);
      frame.add(buttons,BorderLayout.SOUTH);
      frame.add(value,BorderLayout.CENTER);
      frame.addWindowListener(this);
      frame.pack();
      frame.show();
    }

    public void actionPerformed(ActionEvent actionEvent){
      if(actionEvent.getActionCommand()=="inc"){
        value.setText(Integer.toString(Integer.parseInt(value.getText())+1));
      }
      else{
        value.setText(Integer.toString(Integer.parseInt(value.getText())-1));
      }
    }
    public void windowClosing(WindowEvent windowEvent){
      System.exit(0);
    }
  }

  public static void main(String[] args){
    Main.View view=new Main().new View();
  }
}
//end