• Eclipse 实现 Java 编辑器【一】(制作GUI界面)


    1. 实验介绍

    1. 实验内容

    建立项目并完成 GUI 界面的编程实现。

    2. 实验知识点

    Java Swing

    3. 完整代码

    这里是引用

    2. 项目文件结构

    在这里插入图片描述

    3. 实验步骤

    1. 新建项目

    首先请双击打开桌面上的 Eclipse ,等待它启动完成后,在文件菜单 File 中选择 New -> Project 来创建项目。
    在这里插入图片描述
    在弹出的新建项目对话框中选择 Java Project,并点击 Next 按钮进入下一步。
    在这里插入图片描述
    在弹出的窗口里填写项目的名称 MyEdit,然后点击 Finish 按钮。
    在这里插入图片描述
    如果遇到下图所示的对话框,点击 Open Perspective 按钮确认即可。
    在这里插入图片描述

    2. 创建包和类

    本项目一共有两个类:

    • FileWindow:主要方法类,用作 GUI 界面以及逻辑功能的实现
    • Main:测试类

    因此我们首先需要创建一个名为 com.shiyanlou.myedit 的包。

    请在创建好的项目目录 src 文件夹上右键点击,然后选择 New -> Package

    在这里插入图片描述
    在弹出的 New Java Package 对话框中填写包名com.shiyanlou.myedit,并点击 Finish 按钮。
    在这里插入图片描述
    最后,在新建好的包下新建FileWindow和Main类。这里只演示创建 FileWindow 的过程。
    在这里插入图片描述
    在这里插入图片描述

    3. GUI 界面的实现

    GUI 界面的效果图如下:
    在这里插入图片描述
    界面的设计采用卡片布局(CardLayout),白色文本域为程序输入区,粉红色文本域为编译结果显示区,浅蓝色文本域为程序运行结果区。点击上方不同的功能按钮显示对应的文本域。

    在 FileWindow 类中编写实现 GUI 的代码,相关的代码如下,代码的讲解将会以注释的形式进行,请在编写代码的同时留意相关的注释。

    package com.shiyanlou.myedit;
    
    import java.awt.CardLayout;
    import java.awt.Color;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    
    public class FileWindow extends JFrame implements ActionListener, Runnable {
    
        /*注意:因为实现了ActionListener 和Runnable接口,所以必须要实现这两个接口的方法。这里我们先把这两个方法简单实现以下。下节课将彻底完成这两个方法。*/
    
        Thread compiler = null;
        Thread run_prom = null;
        boolean bn = true;
        CardLayout mycard;  //声明布局,以后会用到
        File file_saved = null;
        JButton button_input_txt,   //按钮的定义
                button_compiler_text,
                button_compiler,
                button_run_prom,
                button_see_doswin;
    
        JPanel p = new JPanel();
        JTextArea input_text = new JTextArea(); // 程序输入区
        JTextArea compiler_text = new JTextArea();// 编译错误显示区
        JTextArea dos_out_text = new JTextArea();// 程序的输出信息
    
        JTextField input_file_name_text = new JTextField();
        JTextField run_file_name_text = new JTextField();
    
        public FileWindow() {
            // TODO Auto-generated constructor stub
            super("Java语言编译器");
            mycard = new CardLayout();
            compiler=new Thread(this);
            run_prom=new Thread(this);
            button_input_txt=new JButton("程序输入区(白色)");
            button_compiler_text=new JButton("编译结果区(粉红色)");
            button_see_doswin=new JButton("程序运行结果(浅蓝色)");
            button_compiler=new JButton("编译程序");
            button_run_prom=new JButton("运行程序");
    
            p.setLayout(mycard);//设置卡片布局
            p.add("input",input_text);//定义卡片名称
            p.add("compiler", compiler_text);
            p.add("dos",dos_out_text);
            add(p,"Center");
    
            compiler_text.setBackground(Color.pink); //设置颜色
            dos_out_text.setBackground(Color.cyan);
            JPanel p1=new JPanel();
    
            p1.setLayout(new GridLayout(3, 3)); //设置表格布局
            //添加组件
            p1.add(button_input_txt);
            p1.add(button_compiler_text);
            p1.add(button_see_doswin);
            p1.add(new JLabel("输入编译文件名(.java):"));
            p1.add(input_file_name_text);
            p1.add(button_compiler);
            p1.add(new JLabel("输入应用程序主类名"));
            p1.add(run_file_name_text);
            p1.add(button_run_prom);
            add(p1,"North");
    
            //定义事件
            button_input_txt.addActionListener(this);
            button_compiler.addActionListener(this);
            button_compiler_text.addActionListener(this);
            button_run_prom.addActionListener(this);
            button_see_doswin.addActionListener(this);
    
    
        }
    
        public void actionPerformed(ActionEvent e)
        {
             //实现方法
    
        }
    
        @Override
        public void run() {
            //实现方法
        }
    
    
        }
    
    
    • 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
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98

    4. 测试类的实现

    Main.java:

    package com.shiyanlou.myedit;
    
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            FileWindow win=new FileWindow();
            win.pack();
            win.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e)
                {
                    System.exit(0);
                }
            });
            //设置窗口大小
            win.setBounds(200, 180,550,360);
            win.setVisible(true);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    4. 实验总结

    在本次实验中,我们完成了项目的创建以及 GUI 界面
    实现界面组件事件响应逻辑和 Java 文件的编辑、编译及运行。主要包括两个方法:

    • public void actionPerformed(ActionEvent e)
    • public void run()
  • 相关阅读:
    【Python进阶】近200页md文档14大体系第4篇:Python进程使用详解(图文演示)
    playwright在vscode+jupyter中出现NotImplementedError问题
    windows下载安装Zeal
    ElasticSerach+MongoDB:实现文章检索历史功能
    数据库 — 增删查改
    Go-Excelize API源码阅读(四十)——SetCellRichText
    第二节——Vue 基本介绍
    JSON和全局异常处理
    钡铼R40边缘计算网关与华为云合作,促进物联网传感器数据共享与应用
    AR人体姿态识别,实现无边界的人机交互
  • 原文地址:https://blog.csdn.net/qq_52354698/article/details/127657550