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() {
        //实现方法
    }


    }

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);
    }
}

4. 实验总结

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

  • public void actionPerformed(ActionEvent e)
  • public void run()
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐