2010-07-14 237 views
1

我已经创建了一个弹出菜单,并在面板上右键单击显示菜单。但是,当我点击菜单项复选框没有被选中。 下面是代码:JCheckboxMenuItem不按预期工作

public class DebugMenu extends JPopupMenu implements ActionListener{ 

public void actionPerformed(ActionEvent e) { 
    System.out.println("inside action"); 
     AbstractButton aButton = (AbstractButton) e.getSource(); 
     System.out.println(aButton.getText() +" " +aButton.getModel().isSelected()); 
     aButton.getModel().setSelected(!aButton.getModel().isSelected()); 
} 

public DebugMenu(){ 
    JMenuItem menuItem = new JCheckBoxMenuItem("2"); 

    add(menuItem); 
    menuItem.addActionListener(this); 
    menuItem = new JCheckBoxMenuItem("1"); 
    add(menuItem); 
    menuItem.addActionListener(this); 
} 

}

和面板类

公共类パ实现的MouseListener {

public TestPanel(){ 
    JFrame frame = new JFrame("TEST"); 
    frame.setSize(400,400); 
    frame.addMouseListener(TestPanel.this); 
    frame.setVisible(true); 
} 

public static void main(String args[]){ 
    new TestPanel(); 


} 

public void mouseReleased(MouseEvent e) { 
    DebugMenu menu = new DebugMenu(); 
    if(e.isPopupTrigger()){ 
     System.out.println("trigger"); 
     menu.show(e.getComponent(), e.getX(), e.getY()); 
    }    
} 

public void mousePressed(MouseEvent e) { 
    DebugMenu menu = new DebugMenu(); 
    if(e.isPopupTrigger()){ 
     System.out.println("trigger"); 
     menu.show(e.getComponent(), e.getX(), e.getY()); 
    } 


} 

public void mouseExited(MouseEvent e) { 
    // TODO Auto-generated method stub 

} 

public void mouseEntered(MouseEvent e) { 
    // TODO Auto-generated method stub 

} 

public void mouseClicked(MouseEvent e) { 
    DebugMenu menu = new DebugMenu(); 
    if(e.isPopupTrigger()){ 
     menu.show(e.getComponent(), e.getX(), e.getY()); 
    } 

} 

}

什么,我做错了什么?

回答

0

我想通了......我不应该创建mouseEvents内DebugMenu对象...

0

嗯,我想aButton.isSelected()返回true,当你点击它,使否定关闭选择。尝试使用这个:

public void actionPerformed(ActionEvent e) { 
    ((JCheckBoxMenuItem) e.getSource()).setSelected(true); 
} 
+0

太糟糕了,你可以使用.isSelected()来切换复选标记...它总是返回true(我猜是因为你只是“选择”菜单(用鼠标点击它))。任何人都知道如何在每次点击时打开/关闭勾选标记? – geowar 2017-10-13 22:48:38