Erro ao fazer um cast [RESOLVIDO]

3 respostas
M

Associei um JPopupMenu a um JTable. Mas no actionPerformed da Action quando vou fazer a conversão de tipos ele está retornando um JPopupMenu$1 e não um JPopupMenu. Alguém por que está acontecendo isso?

java.lang.ClassCastException: javax.swing.JPopupMenu$1 cannot be cast to javax.swing.JPopupMenu
	at br.com.feit.ediario.view.DiarioPanelView$ExcluirAulaAction.actionPerformed(PanelView.java:1296)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1220)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1261)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
	at java.awt.Component.processMouseEvent(Component.java:6041)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
	at java.awt.Component.processEvent(Component.java:5806)
	at java.awt.Container.processEvent(Container.java:2058)
	at java.awt.Component.dispatchEventImpl(Component.java:4413)
	at java.awt.Container.dispatchEventImpl(Container.java:2116)
	at java.awt.Component.dispatchEvent(Component.java:4243)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
	at java.awt.Container.dispatchEventImpl(Container.java:2102)
	at java.awt.Window.dispatchEventImpl(Window.java:2440)
	at java.awt.Component.dispatchEvent(Component.java:4243)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

3 Respostas

T

JPopupMenu$1 é uma classe interna a JPopupMenu. Como você conseguiu essa proeza?

M

Estou criando o popup da seguinte forma:

JPopupMenu popupMenu = new JPopupMenu();
popupMenu.add(excluirAction); // excluirAction é uma action previamente criada

no actionPerformed da action tento fazer a conversão

...

public void actionPerformed(ActionEvent e) {

JPopupMenu popupMenu = (JPopupMenu) e.getSource();

}

...

e tenho o seguinte erro.

java.lang.ClassCastException: javax.swing.JPopupMenu$1 cannot be cast to javax.swing.JPopupMenu

porque ele está retornando a classe interna?

M

Resolvido

no ActionPerformed fiz:

JPopupMenu popupMenu = (JPopupMenu) ((JComponent) e.getSource()).getParent();
Criado 20 de março de 2009
Ultima resposta 20 de mar. de 2009
Respostas 3
Participantes 2