最後の例は、JDK1.1で新たに導入された、Inner Class を使って、 先のサンプル3を書き換えたものです。これは、なかなか面白いコードだと思います。
== サンプル5 ===============================================================
import java.awt.*;
import java.awt.event.*;
class App {
public static void main(String argv[]){
App app = new App();
GUI gui = app.new GUI();
}
class GUI extends Frame {
Button button ;
Checkbox checkbox ;
List list ;
Choice choice ;
Panel panel ;
TextField textfield ;
GUI(){
button = new Button("ボタン");
checkbox = new Checkbox("チェック");
list = new List(1);
list.add("リスト1");
list.add("リスト2");
list.add("リスト3");
choice = new Choice();
choice.add("チョイス1");
choice.add("チョイス2");
choice.add("チョイス3");
panel = new Panel();
panel.add(button);
panel.add(checkbox);
panel.add(list);
panel.add(choice);
add(panel,"North");
textfield = new TextField();
add(textfield,"South");
button.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent evt){
textfield.setText("ボタンが押されました。" );
}
}
);
checkbox.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent evt){
if ( checkbox.getState() ){
textfield.setText("チェックされました。" );
} else {
textfield.setText("チェックが外されました。" );
}
}
}
);
list.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent evt){
textfield.setText(list.getSelectedItem() + "が選ばれました。" );
}
}
);
choice.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent evt){
textfield.setText(choice.getSelectedItem() + "が選ばれました。" );
}
}
);
textfield.addFocusListener(
new FocusListener(){
public void focusLost(FocusEvent evt){
textfield.setText("フォーカスが無くなりました。");
}
public void focusGained(FocusEvent evt){
textfield.setText("フォーカスがあります。");
}
}
);
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent evt){
System.exit(0);
}
}
);
pack();
setVisible(true);
}
}
}
=============================================================================