代码之家  ›  专栏  ›  技术社区  ›  harshit

JCheckboxMenuItem未按预期工作

  •  1
  • harshit  · 技术社区  · 16 年前

    我已经创建了一个弹出式菜单和右击面板中的菜单显示。但是当我单击菜单项时,复选框没有被选中。 代码如下:

    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);
    }
    

    还有小组课

    公共类TestPanel实现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());
         }
    
    }
    

    我做错了什么?

    2 回复  |  直到 16 年前
        1
  •  0
  •   user268396    16 年前

    我想是这样的 aButton.isSelected() 当您单击它时返回true,因此取反将关闭选择。尝试改用此选项:

    public void actionPerformed(ActionEvent e) {
      ((JCheckBoxMenuItem) e.getSource()).setSelected(true);
    }
    
        2
  •  0
  •   harshit    16 年前