• 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()
  • 相关阅读:
    java计算机毕业设计智能道路交通管理系统源程序+mysql+系统+lw文档+远程调试
    知识融合介绍
    Java中的map集合顺序如何与添加顺序一样,LinkedHashMap,使用entrySet遍历
    举个栗子~ Minitab 技巧(1):快速安装和激活 Minitab 统计软件
    cwnd < 1 时的拥塞控制
    The DAO事件始末
    学点设计模式,盘点Spring等源码中与设计模式的那些事之创建型模式
    云计算就业方向及前景怎么样
    ROS基础
    玩机搞机---全网最详细的手机全机型 刷机教程 二
  • 原文地址:https://blog.csdn.net/qq_52354698/article/details/127657550