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!