public void itemStatechange(ItemEvent e)
             ^^^^^^^^^^^^^^
       改成itemStateChanged

解决方案 »

  1.   

    同意楼上看法,其实你最好再JB中按下ctrl+h(好像是,我现在手头没有JB)还是ctrl+j,它会自动把诊听器需要的函数名称列出来的,那样你就不会写错了,以后还可以多看看Api,里面有比较详细的说明的
      

  2.   

    同意 farawayzheng_necas(遥远) 。
    实现接口时,必须实现接口中定义的所有方法。你把方法名写错了,认为你是又定义了一个新的方法,而不是实现接口中的方法。
    另外,你把boldBox和italicBox加到一个ButtonGroup中,效果会好些:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public  class MyCheckBox extends JFrame
    implements ItemListener
    {JTextField tf;
    JCheckBox boldBox,italicBox;
    ButtonGroup buttonGroup1 = new ButtonGroup();
    int bold=Font.PLAIN,italic=Font.PLAIN;
    public MyCheckBox()
    {
    super("dddddd");
    Container c=getContentPane();
    c.setLayout(new FlowLayout());
    tf=new JTextField("dkadk",24);
    tf.setFont(new Font("Serif",Font.PLAIN,14));
    boldBox=new JCheckBox("boldBox");
    italicBox=new JCheckBox("italicBox");
    boldBox.addItemListener(this);
    italicBox.addItemListener(this);
    buttonGroup1.add(boldBox);
    buttonGroup1.add(italicBox);
    c.add(tf);
    c.add(boldBox);
    c.add(italicBox);
    setSize(275,100);
    show();
    }public void itemStateChanged(ItemEvent e)
    {
    if (e.getSource()==boldBox)
    {
    if (e.getStateChange()==ItemEvent.SELECTED)
    {
    bold=Font.BOLD;
    }
    else
    {
    bold=Font.PLAIN;
    }
    }
    if (e.getSource()==italicBox)
    {
    if (e.getStateChange()==ItemEvent.SELECTED)
    {
    italic=Font.ITALIC;
    }
    else
    {
    italic=Font.PLAIN;
    }
    }
    tf.setFont(new Font("serif",bold+italic,16));
    tf.repaint();
    }public static void main(String args[])
    {
    MyCheckBox app=new MyCheckBox();
    }}