2010-07-14 145 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