import javax.swing.*;
import java.awt.*;
import java.awt.event.*;class CheckboxPanel extends JPanel {
Icon unchecked=new ToggleIcon(false);
Icon checked=new ToggleIcon(true);
JCheckBox cb1;
JCheckBox cb2;
public CheckboxPanel() {
setLayout(new GridLayout(2,1));
cb1 = new JCheckBox("Choose Me",true);
cb1.setIcon(unchecked);
cb1.setSelectedIcon(checked);
cb2 = new JCheckBox("No Choose Me",false);
cb2.setIcon(unchecked);
cb2.setSelectedIcon(checked);
add(cb1);
add(cb2);
}
}class ToggleIcon implements Icon {
boolean state;
public ToggleIcon(boolean s) {
state=s;
}
public void paintIcon(Component c,Graphics g,int x,int y) {
int width=getIconWidth();
int height=getIconHeight();
g.setColor(Color.black);
    if(state) {
   g.fillOval(x,y,width,height);
} else  {
g.drawOval(x,y,width,height);
}
}
public int getIconWidth() {
return 10;
}
public int getIconHeight() {
return 10;
}
}
public class Example8_26 extends JApplet implements ItemListener {
CheckboxPanel panel1;
JTextField text1;
public void init() {
text1 = new JTextField(null,10);
panel1=new CheckboxPanel();
panel1.add(text1);
add(panel1);
panel1.cb1.addItemListener(this);
panel1.cb2.addItemListener(this);
 }
 public void itemStateChanged(ItemEvent e) {
if(e.getItemSelectable() == panel1.cb1) {
text1.setText("hehe"); 
} else {
text1.setText("haha");
}
}
}

解决方案 »

  1.   

    先谢谢楼上,编译是没问题了,但运行时总是出现异常。是哪儿错误呢?
    java.lang.Error: Do not use Example8_26.add() use Example8_26.getContentPane().
    dd() instead
            at javax.swing.JApplet.createRootPaneException(JApplet.java:203)
            at javax.swing.JApplet.addImpl(JApplet.java:225)
            at java.awt.Container.add(Container.java:307)
            at Example8_26.init(Example8_26.java:52)
            at sun.applet.AppletPanel.run(AppletPanel.java:353)
            at java.lang.Thread.run(Thread.java:534)
      

  2.   

    我在public CheckboxPanel() 加了两句 Container c=new getContentPane(); c.setLayout(new GridLayout(2,1));
    却又出现了下面这样的错误,请教各位。
    --------------------Configuration: j2sdk1.4.2_05 <Default>--------------------
    F:\learning\Example8_26.java:11: cannot resolve symbol
    symbol  : class getContentPane 
    location: class CheckboxPanel
    Container c=new getContentPane();
                                    ^
    1 errorProcess completed.
      

  3.   

    panel1.add(text1);改为this.getContentPane().panel1.add(text1);
      

  4.   

    这样的绝对可以运行,呵呵,楼主给分吧
    运行的html code是
    <htmL>
    <head>
    <title>Applet Test</title>
    </head>
    <body>
    <applet code="TestApplet" >
    </applet>
    </body>
    </html>
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    class ToggleIcon implements Icon
    {
        boolean state;
     public ToggleIcon(boolean s)
     {state=s;}
     public void paintIcon(Component c,Graphics g,int x,int y)
      {int width=getIconWidth();
       int height=getIconHeight();
       g.setColor(Color.black);
       if(state)
       g.fillOval(x,y,width,height);
       else g.drawOval(x,y,width,height);
      }
     public int getIconWidth()
      {return 10;}
      public int getIconHeight()
      {return 10;}
     }
    public class TestApplet extends JApplet implements ItemListener
    {
        JPanel panel = new JPanel();Icon unchecked=new ToggleIcon(false);
     Icon checked=new ToggleIcon(true);
     JCheckBox cb1 =  new JCheckBox("Choose Me",true);
     JCheckBox cb2 =  new JCheckBox("No Choose Me",false);
     JTextField text1; public void init() {
        panel.setLayout(new GridLayout(2,1));
        cb1.setIcon(unchecked);
        cb1.setSelectedIcon(checked);
        cb2.setIcon(unchecked);
        cb2.setSelectedIcon(checked);
        panel.add(cb1);
        panel.add(cb2);
          text1=new JTextField(10);
         panel.add(text1);
         getContentPane().add(panel);
         cb1.addItemListener(this);
         cb2.addItemListener(this);
    } public void itemStateChanged(ItemEvent e)
     {if(e.getItemSelectable()==cb1)
       text1.setText("hehe");
     else text1.setText("haha");
     }
    }
      

  5.   

    谢谢楼上的。不过你的html code 有点小问题