Não Encontro o Erro

2 respostas
F

Olá,

Sou iniciante em Java e estou tentando compilar a o código da classe abaixo, mas estou tendo o erro "Cannot find symbol method add(java.awt.CheckboxMenuItem)".

Alguém seberia me dizer onde está o erro?

Obrigado!
// MenuTool

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public final class MenuTool {
	
	public static final JMenu makeMenu (
		Object base,
		Object[] items,
		Object target) {
			
	JMenu m = null;
	
	if(base instanceof JMenu)
	
		m = (JMenu)base;
		
	else if (base instanceof String)
	
		m = new JMenu((String)base);
		
	else 
	
		return null;
		
	for (int i = 0; i < items.length; i++) {
		
		if (items[i] instanceof String) {
			
			JMenuItem mi = new JMenuItem((String)items[i]);
			
				if (target instanceof ActionListener)
				
				mi.addActionListener((ActionListener)target);
				m.add(mi);
							
		}	else if (items[i] instanceof CheckboxMenuItem &&
				target instanceof ItemListener) {
				 	
				CheckboxMenuItem cmi = (CheckboxMenuItem)items[i];
				cmi.addItemListener((ItemListener)target);
				m.add(cmi);
				
		}	else if (items[i] instanceof JMenuItem) {
		
				JMenuItem mi = (JMenuItem)items[i];
				
				if (target instanceof ActionListener)
				mi.addActionListener((ActionListener)target);
				m.add(mi);
				
		}	else if (items[i] == null)
	
				m.addSeparator();
				
	}
	
	return m;
	
	}
}

2 Respostas

nicoweda

O problema está neste trecho do código

else if (items[i] instanceof CheckboxMenuItem &&
 				target instanceof ItemListener) {
 				 	
 				CheckboxMenuItem cmi = (CheckboxMenuItem)items[i];
 				cmi.addItemListener((ItemListener)target);
 				m.add(cmi);
O método add() da Classe JMenu pode receber como parametro um JMenuItem, mas o CheckboxMenuItem não é uma subclasse de JMenuItem e sim de MenuItem que é uma outra classe, por este motivo você está recebendo uma falaha na compilação!!!

Espero ter ajudado,
Um grande abaraço...

F

Prezado nicoweda,

Muito obrigado! Foi de grande ajuda…

Abraço,

ffranco

Criado 2 de setembro de 2006
Ultima resposta 2 de set. de 2006
Respostas 2
Participantes 2