2017-01-21 76 views
-1

我收到此错误的ItemListener和ItemEvent行。我把**放在哪里。无法解析为类型?

import java.awt.FlowLayout; 
import java.awt.Font; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import javax.swing.JFrame; 
import javax.swing.JButton; 
import javax.swing.JCheckBox; 
import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 


public class gui extends JFrame { 

private JTextField tf; 
private JCheckBox boldbox; 
private JCheckBox italicbox; 

public gui() { 
    super("The title"); 
    setLayout(new FlowLayout()); 

    tf = new JTextField("This is a sentence", 20); 
    tf.setFont(new Font("Serif", Font.PLAIN, 14)); 
    add(tf); 

    boldbox = new JCheckBox("bold"); 
    italicbox = new JCheckBox("italic"); 
    add(boldbox); 
    add(italicbox); 

    HandlerClass handler = new HandlerClass(); 
    boldbox.addItemListener(handler); 
    italicbox.addItemListener(handler); 
} 

private class HandlerClass implements *ActionListener* { 
    public void itemStateChanged(*ActionEvent* event) { 
     Font font = null; 

     if (boldbox.isSelected()&& italicbox.isSelected()) 
      font = new Font("Serif", Font.BOLD + Font.ITALIC, 14); 
     else if(boldbox.isSelected()) 
       font = new Font("Serif", Font.BOLD, 14); 
     else if(italicbox.isSelected()) 
        font = new Font("Serif", Font.ITALIC, 14); 
     else font = new Font("Serif", Font.PLAIN, 14); 

         tf.setFont(font); 
     } 
    }    
} 

你能帮我理解为什么我会得到那个错误吗?领导该教程的人不会得到这些错误。

编辑:

import java.awt.FlowLayout; 
import java.awt.Font; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
import javax.swing.JFrame; 
import javax.swing.JButton; 
import javax.swing.JCheckBox; 
import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 




public class gui extends JFrame { 

private JTextField tf; 
private JCheckBox boldbox; 
private JCheckBox italicbox; 

public gui() { 
    super("The title"); 
    setLayout(new FlowLayout()); 

    tf = new JTextField("This is a sentence", 20); 
    tf.setFont(new Font("Serif", Font.PLAIN, 14)); 
    add(tf); 

    boldbox = new JCheckBox("bold"); 
    italicbox = new JCheckBox("italic"); 
    add(boldbox); 
    add(italicbox); 

    HandlerClass handler = new HandlerClass(); 
    boldbox.addActionListener(handler); 
    italicbox.addActionListener(handler); 
} 

private class HandlerClass implements ActionListener { 
    @Override 
    public void ActionPerformed(ActionEvent event) { 
     Font font = null; 

     if (boldbox.isSelected()&& italicbox.isSelected()) 
      font = new Font("Serif", Font.BOLD + Font.ITALIC, 14); 
     else if(boldbox.isSelected()) 
       font = new Font("Serif", Font.BOLD, 14); 
     else if(italicbox.isSelected()) 
        font = new Font("Serif", Font.ITALIC, 14); 
     else font = new Font("Serif", Font.PLAIN, 14); 

         tf.setFont(font); 
    } 
}   
} 
+0

什么是'ItemListener'和'ItemEvent'?你是否错过了他们的进口报告和/或他们的实际定义? – luk2302

回答

1

你必须输入一个ItemEvent类。

进口java.awt.event.ItemEvent中

+0

我在其他导入语句中添加了它,并且一个红色叉号消失了。 ItemListener的红色十字仍然存在。 –

1

你应该改变ItemListenerActionListenerItemEventActionEvent

它应该是这样的:

private class HandlerClass implements ActionListener { 
    @Override 
    public void actionPerformed(ActionEvent event) { 
     Font font = null; 
     if (boldbox.isSelected() && italicbox.isSelected()) 
      font = new Font("Serif", Font.BOLD + Font.ITALIC, 14); 
     else if(boldbox.isSelected()) 
      font = new Font("Serif", Font.BOLD, 14); 
     else if(italicbox.isSelected()) 
      font = new Font("Serif", Font.ITALIC, 14); 
     else font = new Font("Serif", Font.PLAIN, 14); 
      tf.setFont(font); 
     } 
    }    
} 
+0

是否做到了。现在我得到“类型gui.HandlerClass必须实现继承的抽象方法 ActionListener.actionPerformed(ActionEvent)” –

+0

并在上面的两行获取它。 –

+0

将'itemStateChanged'方法名更改为'actionPerformed'。 – alayor