Как деактивировать метод для определенного menuItem? - PullRequest
1 голос
/ 11 июня 2011

Я хочу как-то проверить, какой именно MenuItem был выбран, чтобы для некоторых кнопок меню нарисовать сетку другим способом.

У меня есть меню, созданное в виде пакета, в классе MainUI:

Также я забыл упомянуть, что код для создания меню находится в методе, называемом showContainers

        // Create the game menu
    menuGame = new JMenu( "Game" );
    menuGame.setMnemonic( 'G' );
    menuBar.add( menuGame );
    // Create the game menu
    // Build a game menu items
            //...Create 3x3 Game
    menuGame3 = CreateMenuItem( menuGame, ITEM_RADIO,
                            "Create 3x3 Game", null, '3', null );
    //...Create 4x4 Game
    menuGame4 = CreateMenuItem( menuGame, ITEM_RADIO,
                            "Create 4x4 Game", null, '4', null );
            //...Create 5x5 Game
    menuGame5 = CreateMenuItem( menuGame, ITEM_RADIO,
                            "Create 5x5 Game", null, '5', null );
    //...Create 6x6 Game
    menuGame6 = CreateMenuItem( menuGame, ITEM_RADIO,
                            "Create 6x6 Game", null, '6', null );
            //...Create 7x7 Game
    menuGame7 = CreateMenuItem( menuGame, ITEM_RADIO,
                            "Create 7x7 Game", null, '7', null );
            //...Create 8x8 Game
    menuGame8 = CreateMenuItem( menuGame, ITEM_RADIO,
                            "Create 8x8 Game", null, '8', null );
            //...Create 9x9 Game
    menuGame9 = CreateMenuItem( menuGame, ITEM_RADIO,
                            "Create 9x9 Game", null, '9', null );
            ButtonGroup group = new ButtonGroup();
            group.add(menuGame3);
            group.add(menuGame4);
            group.add(menuGame5);
            group.add(menuGame6);
            group.add(menuGame7);
            group.add(menuGame8);
            group.add(menuGame9);

        public void addCreateGame3Listener(ActionListener createGameListener){
    menuGame3.addActionListener(createGameListener);
}

public void addCreateGame4Listener(ActionListener createGameListener){
    menuGame4.addActionListener(createGameListener);
}

    public void addCreateGame5Listener(ActionListener createGameListener){
    menuGame5.addActionListener(createGameListener);
}

public void addCreateGame6Listener(ActionListener createGameListener){
    menuGame6.addActionListener(createGameListener);
}

    public void addCreateGame7Listener(ActionListener createGameListener){
    menuGame7.addActionListener(createGameListener);
}

    public void addCreateGame8Listener(ActionListener createGameListener){
    menuGame8.addActionListener(createGameListener);
}

    public void addCreateGame9Listener(ActionListener createGameListener){
    menuGame9.addActionListener(createGameListener);
}

Это PainComponent вGameUI, где я делал изменения:

@Override
public void paintComponent(Graphics g){

    highLightCage =false ;
    super.paintComponent(g); //clear the off-screen bitmap
    drawCells(g);
    drawCages(g);
            if( MainUI.menuGame3.isSelected()){
                    drawCageLabels(g);
            }
    drawLabels(g);
    drawGameHint(g);
}

Проблема заключалась в том, что я не объявил menuGame3 как общедоступную статическую в классе MainUI и не мог сослаться на него.

Ответы [ 2 ]

1 голос
/ 11 июня 2011

Учитывая неполный код (что делает CreateMenuItem?), Я не уверен, что могу предложить отличное решение.Но я предполагаю, что у вас есть куча JRadioButton с, и в этом случае вы можете сделать что-то вроде этого:

if ( !menuGame8.isSelected() && !menuGame9.isSelected() ) {
   drawCageLabels();
}
1 голос
/ 11 июня 2011

посмотрите на actionListeners и посмотрите учебник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...