프로그래밍 언어/JAVA

<Java> swing 메뉴 클릭이 되지 않는 문제 해결하기

창조적생각 2021. 7. 30. 10:34

 

 

메뉴를 누르면 상호작용을 하게 코드를 짰다고 생각했지만 상호작용을 하지 않는 분들을 위한 팁입니다.

저도 swing 과제를 하면서 이 문제에 부닥쳤습니다.

교과서에 나온 것처럼 e.getActionCommand와 switch문을 써봤지만 아무리 메뉴를 눌러도 꿈쩍도 않습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void createMenu() {
        JMenuBar mb = new JMenuBar();
        JMenu screenMenu = new JMenu("만든분");
        screenMenu.addActionListener(new MenuActionListener());
        JMenu add = new JMenu("단어 추가");
        mb.add(screenMenu);
        add.addActionListener(new MenuActionListener());
        mb.add(add);
        setJMenuBar(mb);
        
        
    }
class MenuActionListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            String cmd = e.getActionCommand();
            switch(cmd) {
            case "만든 분":
                v_a.setVisible(true);
                break;
            case "단어 추가":
                ct.setVisible(true);
                break;
            
cs

 

답은 교과서에 있습니다.

저는 명품자바프로그래밍을 보며 공부를 했는데, 거기에 나온 예제에는 분명히 

 

 

 

이 메뉴가 아니라

 

 

메뉴를 누르면 아래로 내려오는 MenuItem에 액션을 다는 것이었습니다.

 

그렇기에 저렇게 메뉴에 추가해서 MenuItem에 액션을 넣어서 써도 되지만 

걍 그럴것 없이 메뉴바에 메뉴를 눌러서 사용하려면 

그냥 MenuBar에 MenuItem을 추가해주면 됩니다.

[메뉴 코딩 보기]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private void createMenu() {
        mb = new JMenuBar();
        View_all = new JMenuItem("전체 단어 보기");
        Add_words = new JMenuItem("단어 추가하기");
        creator = new JMenuItem("만드신 분");
        mb.add(View_all);
        View_all.addActionListener(new MenuActionListener());
        mb.add(Add_words);
        Add_words.addActionListener(new MenuActionListener());
        mb.add(creator);
        creator.addActionListener(new MenuActionListener());
        setJMenuBar(mb);
        
        
    }
    class MenuActionListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            String cmd = e.getActionCommand();
            switch(cmd) {
            case "전체 단어 보기":
                v_a.setVisible(true);
                break;
            case "만드신 분":
                ct.setVisible(true);
                break;
            case "단어 추가하기":
                aw.setVisible(true);
            }
                
        }
    }
cs

*저도 수 시간 고민하다가 옆 사람한테 이 이야기를 들었을때 어처구니가 없었습니다.

**언제나 글을 잘 읽는 습관을 들여야겠지요.

***여러분은 저처럼 오래 고민하시지 않고 해답을 찾기를 바라겠습니다.

****긴 글 읽어봐주셔서 감사합니다.

 

728x90