JCheckboxMenuItem не работает должным образом - PullRequest
1 голос
/ 14 июля 2010

Я создал всплывающее меню и при щелчке правой кнопкой мыши на панели отображается меню. Но когда я щелкаю пункт меню, флажок не выбирается. Вот код:

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 ]

0 голосов
/ 14 июля 2010

Я понял это ... Я не должен создавать объект DebugMenu внутри mouseEvents ...

0 голосов
/ 14 июля 2010

Ну, я думаю, что aButton.isSelected() возвращает true, когда вы щелкнули по нему, так что отрицание отключает выбор. Попробуйте использовать это вместо:

public void actionPerformed(ActionEvent e) {
  ((JCheckBoxMenuItem) e.getSource()).setSelected(true);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...