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());
}
}
}
什麼,我做錯了什麼?
太糟糕了,你可以使用.isSelected()來切換複選標記...它總是返回true(我猜是因爲你只是「選擇」菜單(用鼠標點擊它))。任何人都知道如何在每次點擊時打開/關閉勾選標記? – geowar 2017-10-13 22:48:38