Eclipse之Java开发实验指导(修订版)

Eclipse之Java开发实验指导(修订版)

Eclipse基本概述:

Eclipse是一种可扩展的开放源代码的集成开发环境(IDE)。由IBM公司开源,2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。虽然大多数用户很乐于将Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse的最大特点是它能接受由开发者自己编写的开放源代码插件,通过插件也可使其作为其他计算机语言比如C++、Python的开发工具。本文介绍Eclipse之Java开发使用。

几个基本概念

工作区(workspace)
工作区是一个目录,程序和程序所需要用到的资源都在workspace里,中间缓存文件也存在工作区中。工作区目录会有一个名为.metadata的目录来保存所有设置信息。
项目(Project)
为一个需求所服务的代码文件,一个workspace 可以拥有多个项目,而你的代码必须有归属于某个项目的,不能单独存在。项目目录下的.project和.classpath这两个文件描述了当前项目的信息。
 

Eclipse下载地址为: https://www.eclipse.org/downloads/

我使用的是 Eclipse IDE for Java Developers 的Windows平台版本。

安装 Eclipse 前你需要确保你的电脑已安装 JDK,Eclipse 的安装非常简单,建议你下载压缩包版本(点击 Download Packages链接),为了加快下载进度可选择镜像(点击 Select Another Mirror链接)下载完解压完毕后即可使用,进入文件夹, 是启动程序。

下载时可能会跳转到一个需要你付费的页面,并不是eclipse需要付费,这只是请求你捐钱的,可以不管。

关于Eclipse 具体安装过程参考 https://www.cnblogs.com/du-hong/p/11670441.html

下面给出2个实验示例,先给出一个简单的例子,再给出一个使用GUI界面且使用图片文件的例子。

例1、判断某一年是否为闰年
源码如下:

import java.util.Scanner;
public class LeapYear {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个年份:");
        long year = scan.nextLong();// 接收用户输入
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { // 是闰年
            System.out.print(year + "是闰年!");
        } else { // 不是闰年
            System.out.print(year + "不是闰年!");
        }
    }
}

启动Eclipse出现选择工作空间(workspace界面

设置Eclipse在启动时提示选择工作空间如何设置启动出现上面窗口

打开菜单栏window里的preferences ->在左侧列表找到General点击展开-> 找到startup and shutdown,单击展开-> 选中Workspaces,然后右侧勾选Prompt for workspace on startup即可

安装好Eclipse 第一次运行时候,出现欢迎页面,去掉勾选启动总是显示欢迎下次不再出现欢迎页面

之后又想启动时显示欢迎页面怎么

菜单栏找到Help并单击出现欢迎页面,勾选“启动时总是显示欢迎”

创建项目,通过点击 "File" 菜单然后选择 New > Java Project进行相关设置,

参见下图操作

现在左侧窗格可以看到建立项目 

现在,创建一个类文件,输入本例源代码

在项目的scr右击,并选择 New > Class,

 接下来可以编译、运行了Eclipse已经集成这个功能了,比较简单参见下图

2下面是一个GUI的小游戏:小猪走迷宫游戏

准备素材图片,我这里放在D:\images目录中,如下图,

两个源码文件

PigWalkMazeFrame.java源码文件 
import java.awt.EventQueue;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
 
@SuppressWarnings("serial")
public class PigWalkMazeFrame extends JFrame implements KeyListener, Runnable {
    Rectangle rect1, rect2, rect3, rect4;
    int gobuttonX = 0, gobuttonY = 0;
    final JButton goButton = new JButton();
    URL url = getClass().getResource("/images/pig.png");
    ImageIcon imageIcon = new ImageIcon(url);
    final JLabel label = new JLabel();
    
    /**
     * Launch the application
     * 
     * @param args
     */
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    PigWalkMazeFrame frame = new PigWalkMazeFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    /**
     * Create the frame
     */
    public PigWalkMazeFrame() {
        super();
        addWindowListener(new WindowAdapter() {
            public void windowOpened(final WindowEvent e) {
                goButton.requestFocus(); // 使小猪获取焦点
            }
        });
        getContentPane().setLayout(null);
        setBounds(100, 100, 488, 375);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("小猪走迷宫");
        BakcgroundPanel panel = new BakcgroundPanel();
        rect1 = new Rectangle(0, 55, 190, 40);
        rect2 = new Rectangle(190, 40, 40, 240);
        rect3 = new Rectangle(190, 180, 230, 40);
        rect4 = new Rectangle(300, 180, 40, 140);
        setResizable(false);
        panel.setLayout(null);
        panel.setBounds(0, 0, 482, 341);
        getContentPane().add(panel);
        final JButton button = new JButton();
        button.addActionListener(new ActionListener() {
            public void actionPerformed(final ActionEvent e) {
                buttonAction(e);
            }
        });
        URL url = getClass().getResource("/images/button.png");
        ImageIcon imageIcons = new ImageIcon(url);
        button.setIcon(imageIcons);
        button.setBounds(27, 100, 106, 28);
        goButton.setBounds(0, 40, imageIcon.getIconWidth(), imageIcon
                .getIconHeight());
        panel.add(goButton);
        panel.add(button);
        gobuttonX = goButton.getBounds().x; // 定义小猪按钮的横坐标
        gobuttonY = goButton.getBounds().y; // 定义小猪按钮的纵坐标
        goButton.addKeyListener(this);
        goButton.setIcon(imageIcon);
        goButton.setContentAreaFilled(false); // 取消填充区域
        goButton.setBorder(null); // 取消边框
        url = getClass().getResource("/images/exit.png");
        imageIcons = new ImageIcon(url);
        label.setIcon(imageIcons);
        label.setBounds(300, 315, imageIcons.getIconWidth(), imageIcons
                .getIconHeight());
        panel.add(label);
    }
    
    @Override
    public void keyPressed(KeyEvent e) {
        if ((gobuttonY == 286)) { // 如果小猪的纵坐标等于286
            Thread thread = new Thread(this);
            thread.start(); // 启动线程
        }
        if (e.getKeyCode() == KeyEvent.VK_UP) { // 如果用户按下了向上键
            Rectangle rectAngle = new Rectangle(gobuttonX, gobuttonY, 20, 20); // 创建Rectangle对象
            if (rectAngle.intersects(rect1)
                    || rectAngle.intersects(rect2)
                    || rectAngle.intersects(rect3)
                    || rectAngle.intersects(rect4)) { // 判断小猪是否走出了迷宫
                gobuttonY = gobuttonY - 2; // 设置变量坐标
                goButton.setLocation(gobuttonX, gobuttonY); // 设置按钮坐标
            } else { // 如果小猪走出了迷宫
                JOptionPane.showMessageDialog(this, "撞墙了吧!重新开始吧!", "撞墙啦!",
                        JOptionPane.DEFAULT_OPTION);
            }
        } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { // 判断用户是否按向下键
            Rectangle rectAngle = new Rectangle(gobuttonX, gobuttonY, 20, 20);
            if (rectAngle.intersects(rect1)
                    || rectAngle.intersects(rect2)
                    || rectAngle.intersects(rect3)
                    || rectAngle.intersects(rect4)) {
                gobuttonY = gobuttonY + 2;
                goButton.setLocation(gobuttonX, gobuttonY);
            } else {
                JOptionPane.showMessageDialog(this, "撞墙了吧!重新开始吧!", "撞墙啦!",
                        JOptionPane.DEFAULT_OPTION);
            }
        } else if (e.getKeyCode() == KeyEvent.VK_LEFT) { // 如果用户按向左键
            Rectangle rectAngle = new Rectangle(gobuttonX, gobuttonY, 20, 20);
            if (rectAngle.intersects(rect1)
                    || rectAngle.intersects(rect2)
                    || rectAngle.intersects(rect3)
                    || rectAngle.intersects(rect4)) {
                gobuttonX = gobuttonX - 2;
                goButton.setLocation(gobuttonX, gobuttonY);
            } else {
                JOptionPane.showMessageDialog(this, "撞墙了吧!重新开始吧!", "撞墙啦!",
                        JOptionPane.DEFAULT_OPTION);
            }
        } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) { // 如果用户按向右键
            Rectangle rectAngle = new Rectangle(gobuttonX, gobuttonY, 20, 20);
            if (rectAngle.intersects(rect1)
                    || rectAngle.intersects(rect2)
                    || rectAngle.intersects(rect3)
                    || rectAngle.intersects(rect4)) {
                gobuttonX = gobuttonX + 2;
                goButton.setLocation(gobuttonX, gobuttonY);
            } else {
                JOptionPane.showMessageDialog(this, "撞墙了吧!重新开始吧!", "撞墙啦!",
                        JOptionPane.DEFAULT_OPTION);
            }
        }
    }
    
    public void buttonAction(ActionEvent e) {
        goButton.setIcon(imageIcon); // 重新设置按钮的显示图片
        goButton.addKeyListener(this); // 为按钮添加键盘事件
        goButton.setBounds(0, 40, imageIcon.getIconWidth(), imageIcon
                .getIconHeight()); // 设置小猪位置
        gobuttonX = goButton.getBounds().x; // 获得小猪当前位置的X坐标
        gobuttonY = goButton.getBounds().y;// 获得小猪当前位置的Y坐标
        goButton.requestFocus(); // 设置按钮获取焦点
    }
    
    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }
    
    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }
    
    @Override
    public void run() {
        URL out = getClass().getResource("/images/pigOut.png"); // 获取图片URL
        ImageIcon imageout = new ImageIcon(out); // 创建图片对象
        goButton.setIcon(imageout); // 设置小猪按钮显示图片
        goButton.setBounds(gobuttonX,
                gobuttonY - imageout.getIconHeight() + 50, imageout
                        .getIconWidth(), imageout.getIconHeight()); // 重新设置按钮位置
        goButton.removeKeyListener(this); // 按钮移除键盘事件
    }
    
}


BakcgroundPanel.java源码文件

import java.awt.Color;
import java.awt.Graphics;
import java.net.URL;
import javax.swing.*;
 
@SuppressWarnings("serial")
public class BakcgroundPanel extends JPanel {
    public BakcgroundPanel() {
        super();
    }
    public void paintComponent(Graphics g) {
        try {
            URL url = getClass().getResource("/images/back.jpg"); // 指定图片路径
            ImageIcon image = new ImageIcon(url); // 创建ImageIcon对象
            g.drawImage(image.getImage(), 0, 0, this); // 将图片绘制到面板上
            g.setColor(Color.RED); // 绘制颜色
            g.fillRect(0, 40, 190, 40); // 在面板上绘制长方形
            g.setColor(Color.yellow);
            g.fillRect(190, 40, 40, 240);
            g.setColor(Color.pink);
            g.fillRect(190, 180, 230, 40);
            g.setColor(Color.cyan);
            g.fillRect(300, 180, 40, 140);
 
        } catch (Exception e) {
        }
    }
}

启动Eclipse,创建项目

项目名称PigGame

不建立模块

现在建立包,右击项目名称,建立包,我这里起名为com.zzk

添加类文件

创建一个PigWalkMazeFrame类文件,输入源代码PigWalkMazeFrame.java

右击包名,再按下图操作:

 用上面类似的方法,
再创建一个BakcgroundPanel类文件,输入源代码BakcgroundPanel.java源码文件,就不图示了。

下面,添加资源文件——本例中需要的图片文件

法一、复制粘贴图片文件夹的方式:复制准备好的图片文件夹,再在eclipse中项目的src上右击粘贴:

法二、用Eclipse的导入功能导入图片文件夹
右击项目的scr,再按下图操作:

接下来可以编译、运行了,Eclipse已经集成这个功能了,比较简单,参见下图:

OK!

导出Runnable JAR file

导出Runnable JAR file,这种方式导出的jar文件可直接通过命令“java -jar jar文件名”或双击“jar文件名”运行。

在项目上右击,再下下面图示操作:

最后,用记事本编写一个批处理文件(扩展名为bat)运行这个jar包,双击批处理文件即可运行jar文件了

内容为:

java -jar pigGame.jar

参见下图:

【 提示:

如想不显示(隐藏)黑窗口运行jar,批处理命令文件内容这样写:
@echo off
::以javaw方式运行jar。(后台运行不会显示黑窗口)
start javaw -jar  jar文件名
exit

可简写为:
@start javaw -jar  jar文件名

 需要提醒的是,若运行导出的jar文件时,找不到资源文件如图片文件等,可以将含有资源文件的文件夹手动复制到相应位置。如何找到其位置线索呢?参见下图:

关于Java 之使用 jar 命令的使用可参见 https://blog.csdn.net/cnds123/article/details/115480190

附录

eclipse如何导入一个项目 https://jingyan.baidu.com/article/1709ad8080fb990734c4f0e5.html

在开发程序的时候,经常要用到第三方jar包,在用Eclipse如何引入第三方jar包?可参见 [Java] Eclipse下导入外部jar包的3种方式 https://blog.51cto.com/u_11990719/3099870

Eclipse导出含第三方库的jar包  https://blog.csdn.net/Dunhuang_Hyoutei/article/details/56680430或 https://blog.csdn.net/k_young1997/article/details/92066393

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值