1、点击DownloadPackages进入Eclipse下载界面。
2、找到EclipseIDEforJavaEEDevelopers,根据自己的系统选择Windows32-bit还是64-bit的下载。
3、接下来就进入Eclipse正式下载界面,点击Download按钮进行Eclipse安装包下载安装即可。
import java.awt.*import java.awt.event.*
import java.io.*
import javax.swing.*
/**
* 这段程序可以对文本类型的文件通过对单个char字符类型的值的增加和减少进行加密和解密。
* 是用awt和swing GUI图形用户界面完成的小程序。
* AWT(Abstract Window Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。
* AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。
*
* Swing(AWT的子类)是一个用于开发Java应用程序用户界面的开发工具包。
* 以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
* Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
*
* java图形界面在你毕业以后基本上是用不到的,因为做客户端程序有c++,c,c#等这些都比swing高效,
* 建议你从swing转android,做手机软件,android的后台端跟swing很类似,你可以认为android是java的swing
* 在手机端的重生。如果你想从事java开发这个行业,android>javaee,记住我说的话,以后你会明白。
* @author Administrator
*
*/
public class code {
Frame f//定义一个awt的frame(框架),更多我们用的swing的JFrame
JPanel p1, p2//定义一个面板,你之前用的awt的小组件,我都改成swing了,awt的在某些电脑上可能存在中文乱码的问题,所以给你调整了。
JLabel l1, l2//这个是标签,就是一个小东东,上面写着一些字,比如:请输入名字。
JButton key, unkey, scan//定义按钮,按钮是啥知道不,点一下,原子d就爆炸了,不要乱点噢。
JTextField t1, t2//这个是一个只有一行的文本框,常见的是输入名字和密码
JTextArea ta//定义一个多行的文本框,常见的是输入回复,或者水贴,比如水帝真经、卖房兽这些多行的文本。
String path//这个不说了,String字符串,定义路径,用来定位文件。
String FileName//文件名字,不知道文件名字怎么能找到文件,你是福尔摩斯吗,所以必须要有这个东东,文件名字,后面会用到。
public code() {
// 设置系统风格 这个是我给你单独加上的,设置跟随系统的风格,你电脑是apple就是apple的风格,windows就是windows的风格,而非原java风格。
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
} catch (Exception e) {
e.printStackTrace()//如果风格定义失败了,会抛出异常。因为setLookAndFeel这个方法直接throws new Exception,所以我们必须写一个try catch以防万一。
}
f = new Frame("文件加密")//这个就是实例化对象喽,一个对象实例化,就是给他分配一块内存空间,这样他才能被使用
f.setLayout(new BorderLayout())//这个是设置布局管理器,是定义布局的,BorderLayout(): 构造一个组件之间没有间距(默认间距为0像素)的新边框布局。
p1 = new JPanel()//对象实例化,这个面板的定义在上面声明这个变量的时候都已经加了注释了,我就不赘述了。
p2 = new JPanel()//其实对象实例化就好像你大学毕业了,户口要落户,你要买房子,你要买车子,你要娶媳妇,不然你咋有脸生活?
l1 = new JLabel("选择路径")
scan = new JButton("浏览")
l2 = new JLabel("密钥")
key = new JButton("加密")
unkey = new JButton("解密")
t1 = new JTextField(30)//定义字符串的长度是30的文本框
t2 = new JTextField(20)
ta = new JTextArea()
p1.add(l1)//把li这个标签加到p1这个面板上
p1.add(t1)//把t1这个文本框加到p1这个面板上
p1.add(scan)//把scan这个按钮加到p1这个面板上
f.add(p1, BorderLayout.NORTH)//把p1这个面板放到frame框架的上方,north 北面,按照上北下南的国际约定,就是整个框架的上方。
p2.add(l2)//跟p1面板的 *** 作一样,就不赘述了。说白了,就是要把这些元素一点一点的放上去,就好像你摞积木,要一块一块的来
p2.add(t2)//先放啥,后发啥,都要有个顺序,当然swing放的顺序是可以打乱的,但是那样显示出来的效果你可能就不满意了。
p2.add(key)
p2.add(unkey)
f.add(p2, BorderLayout.SOUTH)//frame框架下面
f.add(ta, BorderLayout.CENTER)//frame框架中间
f.pack()//pack是调整窗口大小,尽量满足每一个组件的最优大小的情况下让窗口最小化
f.setVisible(true)//设置是否可见,默认是不可见的,你要是不见这个setVisible,那就看不到你的作品
f.addWindowListener(new win())//增加窗口监听器 win是实现了窗口监听器的内部类
scan.addActionListener(new scanner())//浏览按钮增加监听动作,点击浏览按钮之后,scanner中的actionperformed的方法会被调用,打开文件浏览窗口
key.addActionListener(new keyer())//加密按钮增加监听动作,点击加密按钮之后,keyer中的actionperformed的方法会被调用,进行加密 *** 作
unkey.addActionListener(new unkeyer())//解密按钮增加监听动作,点击解密按钮之后,unkeyer中的actionperformed的方法会被调用,进行解密 *** 作
}
public static void main(String[] args) {//main方法是你可以直接执行的方法,右键-->run as-->java application就会执行main这个方法,而且mian方法的声明也是固定的,不能改,改了就不会执行这个入口方法了。
code code1 = new code()//声明code对象,会直接调用code类的构造函数public code(),然后就有你看到的界面了。
}
/**
* WindowAdapter类说明如下:
1.接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
2.扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法。(如果要实现 WindowListener 接口,则必须定义该接口内的所有方法。此抽象类将所有方法都定义为 null,所以只需针对关心的事件定义方法。)
3.使用扩展的类可以创建侦听器对象,然后使用窗口的 addWindowListener 方法向该窗口注册侦听器。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将 WindowEvent 传递给该方法。
4.方法摘要:
方法摘要
void windowActivated(WindowEvent e)
激活窗口时调用。
void windowClosed(WindowEvent e)
当窗口已被关闭时调用。
void windowClosing(WindowEvent e)
窗口正处在关闭过程中时调用。
void windowDeactivated(WindowEvent e)
停用窗口时调用。
void windowDeiconified(WindowEvent e)
取消图标化窗口时调用。
void windowGainedFocus(WindowEvent e)
该 Window 被设置为聚焦 Window 时调用,聚焦 Window 意味着该 Window 或其某个子组件将接收键盘事件。
void windowIconified(WindowEvent e)
图标化窗口时调用。
void windowLostFocus(WindowEvent e)
该 Window 不再为聚焦 Window 时调用,不再为聚焦 Window 意味着键盘事件不再传递到该 Window 或其任意子组件。
void windowOpened(WindowEvent e)
已打开窗口时调用。
void windowStateChanged(WindowEvent e)
窗口状态改变时调用。
* @author Administrator
*
*/
class win extends WindowAdapter {//window适配器
public void windowClosing(WindowEvent e) {//重载windowClosing方法
System.exit(0)//安全退出,这样写会使整个GUI完全退出,不会存在未关掉的情况。
}
}
/**
* ActionListener用于接收 *** 作事件的侦听器接口。对处理 *** 作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的 addActionListener 方法向该组件注册。
* 在发生 *** 作事件时,调用该对象的 actionPerformed 方法。
*/
class scanner implements ActionListener {//浏览按钮的监听器
public void actionPerformed(ActionEvent e) {
JFileChooser file = new JFileChooser(".")//创建一个文本选择器
int result = file.showOpenDialog(null)//打开文本选择器
if (result == JFileChooser.APPROVE_OPTION) {//如果选择了某个文件
FileName = file.getSelectedFile().getName()//获取文件名字
path = file.getSelectedFile().getAbsolutePath()//获取文件绝对路径
t1.setText(path)//t1这个文本框设置他的内容是文件的绝对路径
FileReader reader = null
try {
reader = new FileReader(path)//声明一个文件读取器,并指向你选中的文件
int tempchar
ta.setText("")//ta大文本框内容先清空
while ((tempchar = reader.read()) != -1) {//reader.read()这个方法可以一个一个的读取字符,不断循环,直到读取完毕。
char n = (char) tempchar//获取到char类型的字符 temppchar是个int值,可以直接强转成char。
char[] m = { n }//定义一个char数组
String M = new String(m, 0, 1)//把char数组转化成字符串
ta.append(M)//大文本框后面添加这个字符串,这样只能针对英文字母,不能处理中文噢,你这个程序只能处理abcd这种字母类型的东东。中文是多字节的所以处理不了。
}
reader.close()//关闭读取器,如果你不关闭的话,会留在内存里面,造成垃圾。
} catch (Exception e1) {
ta.append("文件读取出错!")//读取失败大文本框显示失败信息
}
}
}
}
class keyer implements ActionListener {//加密的监听器
public void actionPerformed(ActionEvent e) {
FileReader read1 = null
FileWriter write1 = null
int n
try {
String a = t1.getText()
String b = t2.getText()
File Exist = new File("加密" + FileName)//获取到要加密的文件
if (a.equals(""))
throw new MyException1("请选择路径!")
if (Exist.exists())
throw new MyException1("已存在加密文件,请先删除,再进行加密!")
if (b.equals(""))
throw new MyException1("请输入密钥!")
else
n = Integer.parseInt(t2.getText())
try {
read1 = new FileReader(path)
write1 = new FileWriter("加密" + FileName, true)
int i
while ((i = read1.read()) != -1) {
write1.write((char) (i + n))//这里是把字符的值加上你输入要加密的密钥,比如5,然后写入到你创建的文件中
}
write1.close()
JOptionPane.showMessageDialog(null, "加密成功", "祝贺您",
JOptionPane.PLAIN_MESSAGE)//这个是显示提示框
ta.setText("")
t2.setText("")
} catch (IOException e1) {
}
} catch (MyException1 e2) {
}
}
}
class unkeyer implements ActionListener {//解密我就不说了
public void actionPerformed(ActionEvent e) {
FileReader read1 = null
FileWriter write1 = null
int n
try {
String a = t1.getText()
String b = t2.getText()
File Exist = new File("解密" + FileName)
if (a.equals(""))
throw new MyException1("请选择路径!")
if (Exist.exists())
throw new MyException1("已存在解密密文件,请先删除,再进行解密!")
if (b.equals(""))
throw new MyException1("请输入密钥!")
else
n = Integer.parseInt(t2.getText())
try {
ta.setText("")
t2.setText("")
read1 = new FileReader(path)
write1 = new FileWriter("解密" + FileName, true)
int i
while ((i = read1.read()) != -1) {
write1.write((char) (i - n))
char[] m = { (char) (i - n) }
String M = new String(m, 0, 1)
ta.append(M)
}
write1.close()
JOptionPane.showMessageDialog(null, "解密成功", "祝贺您",
JOptionPane.PLAIN_MESSAGE)
} catch (IOException e1) {
}
} catch (MyException1 e2) {
}
}
}
class MyException1 extends Exception {//这个是自定义的异常,如果有异常,d出框展示异常信息。
public MyException1(String message) {
JOptionPane.showMessageDialog(null, message)
}
}
}
不要谢我,我叫雷哄
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)