2017-01-21 317 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