//cd c:\JavaTry\MySwing //javac ColorPane4.java //set CLASSPATH=. //appletviewer ColorPane4.java import java.applet.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; /* */ public class ColorPane4 extends JApplet { public void init(){ Container contentPane = getContentPane(); ColorPanel4 panel = new ColorPanel4(); contentPane.add(panel); } } class ColorPanel4 extends JPanel { public ColorPanel4() { JButton yellowB; JButton blueB; JButton redB; yellowB = new JButton("Yellow"); blueB = new JButton("Blue"); redB = new JButton("Red"); add(yellowB); add(blueB); add(redB); yellowB.addActionListener(new Response4(Color.yellow)); blueB.addActionListener(new Response4(Color.blue)); redB.addActionListener(new Response4(Color.red)); } class Response4 implements ActionListener { private Color c; public Response4(Color c) { this.c=c; } public void actionPerformed(ActionEvent event) { setBackground(c); } } } /* yellowB.addActionListener(new Response()) などを yellowB.addActionListener(new Response4(Color.yellow))に置き換える。 Response4 を内部クラスとしない場合、actionPerformedメソッドに 1 Component p=new Component() を追加して、 p.setBackground(c); とするが、 「java.awt.Component は abstract、インスタンスを生成できない」とのエラー 2 単に、panel.setBackground(c); とすると、 予想通り、「シンボル: 変数 panelを見つけらない」とのエラー */