小布菌sama
2021-10-23 12:11
采纳率: 100%
浏览 12
已结题

Java菜单事件无响应有时候又行

UI类


import javax.swing.*;

public class NotepadFrame extends JFrame {
    MainPanel panel;

    /*JMenu menu[]=new JMenu[3];*/

    JMenuItem menuItem;
    NotepadListener listener;

    public NotepadFrame() {
        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = new JMenu("文件");
        // 实例化监听类
        listener = new NotepadListener();
        this.setJMenuBar(menuBar);
       /* // 菜单条选项
        String[] menuBarItem = {"文件","格式","帮助"};
        menuBar.setBackground(Color.white);
        for (int i = 0; i < menuBarItem.length; i++) {
            menu[i] = new JMenu(menuBarItem[i]);
            menuBar.add(menu[i]);
        }*/

        menuBar.add(fileMenu);
        // 文件菜单项
        String[] fileItem = {"新建", "打开", "保存", "另存为", "退出"};

        // 分隔线位置
        int size = fileItem.length - 1;

        System.out.println(size);
        for (int i = 0; i < fileItem.length; i++) {
            menuItem = new JMenuItem(fileItem[i]);
            // 设置分隔线
            if (i == size) {
                fileMenu.addSeparator();
            }
            fileMenu.add(menuItem);
            menuItem.addActionListener(listener);
        }

        // 添加用于编辑文本的面板
        panel = new MainPanel();
        this.add(panel);

        // 窗体设置

        this.setTitle("简易记事本");
        this.setSize(600, 600);
        this.setVisible(true);
        this.addMouseListener(listener);
    }

    public static void main(String[] args) {
        new NotepadFrame();
    }
}

事件类

import java.awt.event.*;

public class NotepadListener extends MouseAdapter implements ActionListener, MouseListener {

    // 接收的指令文本
    String str;

    @Override
    public void actionPerformed(ActionEvent e) {
        str=e.getActionCommand();
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        if("新建".equals(str)){
            System.out.println("新建测试");
        }
        /*if ("打开".equals(str)) {
            System.out.println("打开测试");
        }
        if ("保存".equals(str)) {
            System.out.println("保存测试");
        }
        if ("另存为".equals(str)) {
            System.out.println("另存为测试");
        }*/
        if ("退出".equals(str)) {
            System.out.println("退出测试");
            System.exit(0);
        }
    }

    @Override
    public void mousePressed(MouseEvent e) {
        if ("新建".equals(str)) {
            System.out.println("测试新建");
        }
    }
}


接受文本类(没写完)


```java
import javax.swing.*;
import java.awt.*;

public class MainPanel extends JPanel {
    JTextArea textArea=null;

    // 主面板设置
    public MainPanel() {

        textArea=new JTextArea(30,58);
        // 自动换行
        textArea.setLineWrap(true);
        // 换行不断字
        textArea.setWrapStyleWord(true);
        this.add(textArea);
        this.setBackground(Color.white);
    }

}

1条回答 默认 最新

相关推荐 更多相似问题