当前位置: 首页 > news >正文

java gui程序运行_13.JAVA之GUI编程将程序打包jar

jar基本命令:

9b574f9f6ad19ab2774628cce70e077a.png

目标:将下列MyMenuDemo.java代码打包成jar。

方法如下:

1.把java代码放到d:\myclass目录下。

efa96ac31773baa253eb0575971e639d.png

2.按下快捷键ctrl+r,打开运行窗口,输入cmd后回车。

59018d462396ec74f62520281df03175.png

9205c98cf4a3a3a2e1539e323d182a0a.png

3.输入"d:"后按下回车键,进入D盘根目录。

1e9d54f7c60e70e47193c8c114899fce.png

4.输入命令:cd myclass,按下回车键。

141aaa0f09f7fffdbf2636a8cb84ae5e.png

5.编译java源码文件,输入命令javac MyMenuDemo.java,之后按下回车键执行命令。

b67983d91569d902fff0bdd6bc39ba03.png

之后删除源码MyMenuDemo.java文件。

6.编写配置信息1.txt,内容如下:

9d6c768d182b1cb26a0983a5d3f04f76.png

7.输入命令cd..退到D盘根目录,然后输入命令jar -cvfm my_jarname.jar 1.txt myclass。

837b5754218eea940d814dd19fb44269.png

8.双击my_jarname.jar文件,打开程序。

11bca11f05de59294832875b2a16cdec.png

附录:

java代码如下:

package myclass;

import java.awt.FileDialog;

import java.awt.Frame;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.awt.TextArea;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

class MyMenuDemo {

private Frame f;// 定义窗体

private MenuBar bar;// 定义菜单栏

private TextArea ta;

private Menu fileMenu;// 定义"文件"和"子菜单"菜单

private MenuItem openItem, saveItem, closeItem;// 定义条目“退出”和“子条目”菜单项

private FileDialog openDia, saveDia;// 定义“打开、保存”对话框

private File file;//定义文件

MyMenuDemo() {

init();

}

/* 图形用户界面组件初始化 */

public void init() {

f = new Frame("my window");// 创建窗体对象

f.setBounds(300, 100, 650, 600);// 设置窗体位置和大小

bar = new MenuBar();// 创建菜单栏

ta = new TextArea();// 创建文本域

fileMenu = new Menu("文件");// 创建“文件”菜单

openItem = new MenuItem("打开");// 创建“打开"菜单项

saveItem = new MenuItem("保存");// 创建“保存"菜单项

closeItem = new MenuItem("退出");// 创建“退出"菜单项

fileMenu.add(openItem);// 将“打开”菜单项添加到“文件”菜单上

fileMenu.add(saveItem);// 将“保存”菜单项添加到“文件”菜单上

fileMenu.add(closeItem);// 将“退出”菜单项添加到“文件”菜单上

bar.add(fileMenu);// 将文件添加到菜单栏上

f.setMenuBar(bar);// 将此窗体的菜单栏设置为指定的菜单栏。

openDia = new FileDialog(f, "打开", FileDialog.LOAD);

saveDia = new FileDialog(f, "保存", FileDialog.SAVE);

f.add(ta);// 将文本域添加到窗体内

myEvent();// 加载事件处理

f.setVisible(true);// 设置窗体可见

}

private void myEvent() {

// 打开菜单项监听

openItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

openDia.setVisible(true);//显示打开文件对话框

String dirpath = openDia.getDirectory();//获取打开文件路径并保存到字符串中。

String fileName = openDia.getFile();//获取打开文件名称并保存到字符串中

if (dirpath == null || fileName == null)//判断路径和文件是否为空

return;

else

ta.setText(null);//文件不为空,清空原来文件内容。

file = new File(dirpath, fileName);//创建新的路径和名称

try {

BufferedReader bufr = new BufferedReader(new FileReader(file));//尝试从文件中读东西

String line = null;//变量字符串初始化为空

while ((line = bufr.readLine()) != null) {

ta.append(line + "\r\n");//显示每一行内容

}

bufr.close();//关闭文件

} catch (FileNotFoundException e1) {

// 抛出文件路径找不到异常

e1.printStackTrace();

} catch (IOException e1) {

// 抛出IO异常

e1.printStackTrace();

}

}

});

// 保存菜单项监听

saveItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if (file == null) {

saveDia.setVisible(true);//显示保存文件对话框

String dirpath = saveDia.getDirectory();//获取保存文件路径并保存到字符串中。

String fileName = saveDia.getFile();获取打保存文件名称并保存到字符串中

if (dirpath == null || fileName == null)//判断路径和文件是否为空

return;//空操作

else

file=new File(dirpath,fileName);//文件不为空,新建一个路径和名称

}

try {

BufferedWriter bufw = new BufferedWriter(new FileWriter(file));

String text = ta.getText();//获取文本内容

bufw.write(text);//将获取文本内容写入到字符输出流

bufw.close();//关闭文件

} catch (IOException e1) {

//抛出IO异常

e1.printStackTrace();

}

}

});

// 退出菜单项监听

closeItem.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.exit(0);

}

});

// 窗体关闭监听

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

public static void main(String[] args) {

new MyMenuDemo();

}

}

非常感谢您有耐心看完了此文。

为了表示报答,特此献出一秘籍 。

***************************************************

如果jar文件关联失败,想单击一个文件就启动软件如何做呢?

用批处理搞定,编写批处理特别简单,只需记事本写内容,写好后另存为*.bat文件就行。

如果是MyMenuDemo.java源码可编写下列批处理,可实现单击启动程序功能。

Run.bat文件内容如下:

@echo off

javac MyMenuDemo.java

java MyMenuDemo

@pausedel *.class

如果是MyMenuDemo.jar文件,那么编写批处理:

run.bat,文件内容如下:

java -jarMyMenuDemo.jar

相关文章:

  • java输入输出学生成绩_java从键盘输入学生成绩,找出最高分,并输出学生成绩等级。...
  • java $ 解析api_Java版抖音解析接口
  • java 10的 6次方_【Java】 剑指offer(15) 数值的整数次方
  • java 方法 返回值 int_关于java字节流类的read()方法返回值为int的思考
  • java 迭代器复制_java设计模式之迭代器模式
  • java取文件类型_java如何通过文件描述符获取文件类型
  • java pdb_当12C PDB遇上JDBC
  • java复选框添加选中事件_Java的JTable中添加JCheckBox,点击事件处理问题,求高手指点迷津...
  • java thread类是抽象类_抽象类详解
  • 摘要认证 java_摘要认证及实现HTTP digest authentication
  • ssdp java_SSDP 简单服务发现协议
  • suse tomcat mysql_suse 安装jdk和tomcat工作记录
  • javascript java 语法_JavaScript
  • java.lang.nullpointerexception:group_为什么会出现java.lang.nullpointerexception错误
  • java数组查找指定元素_Java在数组中查找指定元素的方法
  • JS 中的深拷贝与浅拷贝
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 0x05 Python数据分析,Anaconda八斩刀
  • Akka系列(七):Actor持久化之Akka persistence
  • canvas绘制圆角头像
  • extract-text-webpack-plugin用法
  • Fundebug计费标准解释:事件数是如何定义的?
  • github从入门到放弃(1)
  • go语言学习初探(一)
  • HTTP中的ETag在移动客户端的应用
  • javascript 总结(常用工具类的封装)
  • Logstash 参考指南(目录)
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Netty 4.1 源代码学习:线程模型
  • PAT A1092
  • python docx文档转html页面
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Spring Boot快速入门(一):Hello Spring Boot
  • SQLServer之创建显式事务
  • vagrant 添加本地 box 安装 laravel homestead
  • windows-nginx-https-本地配置
  • 翻译:Hystrix - How To Use
  • 服务器之间,相同帐号,实现免密钥登录
  • 复杂数据处理
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 基于Android乐音识别(2)
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 前端面试总结(at, md)
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 推荐一个React的管理后台框架
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #ifdef 的技巧用法