Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Java > Нажатие пункта JMenu. Обработка события.


Автор: Alegator 26.09.11, 19:35
Подскажите, как по нажатию пункта меню "New game" вызвать метод из класса TestPanel?
Пытаюсь через ActionListener, но ничего не происходит.
Суть в том, что по нажатию пункта меню надо будет менять содержимое(кнопки, формы) JPanel и объектов класса TestPanel.

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.JMenuBar;
     
    public class NewJApplet extends JApplet {
        public void init() {
            final JFrame frame = new JFrame();
            tp=new TestPanel();
            frame.setSize(210, 272);
            frame.add(new TestPanel());
     
            JMenuBar menuBar = new JMenuBar();
            JMenu menuFile = new JMenu("File");
            JMenuItem item1 = new JMenuItem("New game");
     
            item1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    tp.newGame();
                }
            });
            menuFile.add(item1);
            
            menuBar.add(menuFile);
            frame.setJMenuBar(menuBar);
            
     
            JButton calcButton = new JButton("Start");
            add(calcButton);
     
            calcButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent event) {
                    frame.setVisible(!frame.isVisible());
                }
            });
        }
        TestPanel tp;
    }
     
    class TestPanel extends JPanel {
     
        public TestPanel() {
            display = new JButton("_____");
            add(display, BorderLayout.NORTH);
        }
        public void newGame(){
            display.setText("NEW");
        }
        JButton display;
    }

Автор: mgarin 26.09.11, 19:38
Судя по приведённому куску кода - проблема не в прослушивании нажатия на пункт меню - оно сделано корректно.
Хотя и в остальной части не вижу проблем, если честно...

Автор: Alegator 26.09.11, 19:49
Я выложил полный код. При желании можно скомпилировать.
прога запускается и работает без ошибок, но по нажатию на пункт меню ничего не происходит.

Автор: Alegator 26.09.11, 20:54
Извините. Нашел свой косяк... Было прописано: frame.add(new TestPanel()); а не созданный ранее объект.

Автор: arinosov 27.09.11, 08:58
Логи используйте и такие ошибки быстро будут выявляться...

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)