JavaPackager打包Swing程序到windows、MacOS、Linux三个平台_Eclipse版本

这篇具有很好参考价值的文章主要介绍了JavaPackager打包Swing程序到windows、MacOS、Linux三个平台_Eclipse版本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先在eclipse中创建Maven项目,这个应该很简单的,流程为:

  1. javapackager 打包苹果,eclipse,java
  2. javapackager 打包苹果,eclipse,java
  3. javapackager 打包苹果,eclipse,java

接着在javaprojectdemo下的src/main/java下创建com.hmedu.swing的包(我是完全按照我的项目来写的,基础好的可以自己随便创建)

接着创建SwingComponent类 Java文件

package com.hmedu.swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class SwingComponent
{
	JFrame f = new JFrame("测试");
	// 定义一个按钮,并为之指定图标
	Icon okIcon = new ImageIcon("ico/ok.png");
	JButton ok = new JButton("确认" , okIcon);
	// 定义一个单选按钮,初始处于选中状态
	JRadioButton male = new JRadioButton("男" , true);
	// 定义一个单选按钮,初始处于没有选中状态
	JRadioButton female = new JRadioButton("女" , false);
	// 定义一个ButtonGroup,用于将上面两个JRadioButton组合在一起
	ButtonGroup bg = new ButtonGroup();
	// 定义一个复选框,初始处于没有选中状态。
	JCheckBox married = new JCheckBox("是否已婚?" , false);
	String[] colors = new String[]{"红色" , "绿色"  , "蓝色"};
	// 定义一个下拉选择框
	JComboBox<String> colorChooser = new JComboBox<>(colors);
	// 定义一个列表选择框
	JList<String> colorList = new JList<>(colors);
	// 定义一个8行、20列的多行文本域
	JTextArea ta = new JTextArea(8, 20);
	// 定义一个40列的单行文本域
	JTextField name = new JTextField(40);
	JMenuBar mb = new JMenuBar();
	JMenu file = new JMenu("文件");
	JMenu edit = new JMenu("编辑");
	// 创建“新建”菜单项,并为之指定图标
	Icon newIcon = new ImageIcon("ico/new.png");
	JMenuItem newItem = new JMenuItem("新建" , newIcon);
	// 创建“保存”菜单项,并为之指定图标
	Icon saveIcon = new ImageIcon("ico/save.png");
	JMenuItem saveItem = new JMenuItem("保存" , saveIcon);
	// 创建“退出”菜单项,并为之指定图标
	Icon exitIcon = new ImageIcon("ico/exit.png");
	JMenuItem exitItem = new JMenuItem("退出" , exitIcon);
	
	JCheckBoxMenuItem autoWrap = new JCheckBoxMenuItem("自动换行");
	// 创建“复制”菜单项,并为之指定图标
	JMenuItem copyItem = new JMenuItem("复制"
		, new ImageIcon("ico/copy.png"));
	// 创建“粘贴”菜单项,并为之指定图标
	JMenuItem pasteItem = new JMenuItem("粘贴"
		, new ImageIcon("ico/paste.png"));
	JMenu format = new JMenu("格式");
	JMenuItem commentItem = new JMenuItem("注释");
	JMenuItem cancelItem = new JMenuItem("取消注释");
	// 定义一个右键菜单用于设置程序风格
	JPopupMenu pop = new JPopupMenu();
	// 用于组合三个风格菜单项的ButtonGroup
	ButtonGroup flavorGroup = new ButtonGroup();
	// 创建五个单选框按钮,用于设定程序的外观风格
	JRadioButtonMenuItem metalItem = new JRadioButtonMenuItem("Metal风格" , true);
	JRadioButtonMenuItem nimbusItem = new JRadioButtonMenuItem("Nimbus风格");
	JRadioButtonMenuItem windowsItem = new JRadioButtonMenuItem("Windows风格");
	JRadioButtonMenuItem classicItem = new JRadioButtonMenuItem("Windows经典风格");
	JRadioButtonMenuItem motifItem = new JRadioButtonMenuItem("Motif风格");
	// -----------------用于执行界面初始化的init方法---------------------
	public void init()
	{
		// 创建一个装载了文本框、按钮的JPanel
		JPanel bottom = new JPanel();
		bottom.add(name);
		bottom.add(ok);
		f.add(bottom , BorderLayout.SOUTH);
		// 创建一个装载了下拉选择框、三个JCheckBox的JPanel
		JPanel checkPanel = new JPanel();
		checkPanel.add(colorChooser);
		bg.add(male);
		bg.add(female);
		checkPanel.add(male);
		checkPanel.add(female);
		checkPanel.add(married);
		// 创建一个垂直排列组件的Box,盛装多行文本域JPanel
		Box topLeft = Box.createVerticalBox();
		// 使用JScrollPane作为普通组件的JViewPort
		JScrollPane taJsp = new JScrollPane(ta);     //⑤
		topLeft.add(taJsp);
		topLeft.add(checkPanel);
		// 创建一个水平排列组件的Box,盛装topLeft、colorList
		Box top = Box.createHorizontalBox();
		top.add(topLeft);
		top.add(colorList);
		// 将top Box容器添加到窗口的中间
		f.add(top);
		// -----------下面开始组合菜单、并为菜单添加监听器----------
		// 为newItem设置快捷键,设置快捷键时要使用大写字母
		newItem.setAccelerator(KeyStroke.getKeyStroke('N'
			, InputEvent.CTRL_MASK));    //①
		newItem.addActionListener(e -> ta.append("用户单击了“新建”菜单\n"));
		// 为file菜单添加菜单项
		file.add(newItem);
		file.add(saveItem);
		file.add(exitItem);
		// 为edit菜单添加菜单项
		edit.add(autoWrap);
		// 使用addSeparator方法来添加菜单分隔线
		edit.addSeparator();
		edit.add(copyItem);
		edit.add(pasteItem);
		// 为commentItem组件添加提示信息
		commentItem.setToolTipText("将程序代码注释起来!");
		// 为format菜单添加菜单项
		format.add(commentItem);
		format.add(cancelItem);
		// 使用添加new JMenuItem("-")的方式不能添加菜单分隔符
		edit.add(new JMenuItem("-"));
		// 将format菜单组合到edit菜单中,从而形成二级菜单
		edit.add(format);
		// 将file、edit菜单添加到mb菜单条中
		mb.add(file);
		mb.add(edit);
		// 为f窗口设置菜单条
		f.setJMenuBar(mb);
		// -----------下面开始组合右键菜单、并安装右键菜单----------
		flavorGroup.add(metalItem);
		flavorGroup.add(nimbusItem);
		flavorGroup.add(windowsItem);
		flavorGroup.add(classicItem);
		flavorGroup.add(motifItem);
		pop.add(metalItem);
		pop.add(nimbusItem);
		pop.add(windowsItem);
		pop.add(classicItem);
		pop.add(motifItem);
		// 为5个风格菜单创建事件监听器
		ActionListener flavorListener = e -> {
			try
			{
				switch(e.getActionCommand())
				{
					case "Metal风格":
						changeFlavor(1);
						break;
					case "Nimbus风格":
						changeFlavor(2);
						break;
					case "Windows风格":
						changeFlavor(3);
						break;
					case "Windows经典风格":
						changeFlavor(4);
						break;
					case "Motif风格":
						changeFlavor(5);
						break;
				}
			}
			catch (Exception ee)
			{
				ee.printStackTrace();
			}
		};
		// 为五个风格菜单项添加事件监听器
		metalItem.addActionListener(flavorListener);
		nimbusItem.addActionListener(flavorListener);
		windowsItem.addActionListener(flavorListener);
		classicItem.addActionListener(flavorListener);
		motifItem.addActionListener(flavorListener);
		// 调用该方法即可设置右键菜单,无须使用事件机制
		ta.setComponentPopupMenu(pop);     //④
		// 设置关闭窗口时,退出程序
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.pack();
		f.setVisible(true);
	}
	// 定义一个方法,用于改变界面风格
	private void changeFlavor(int flavor)throws Exception
	{
		switch (flavor)
		{
			// 设置Metal风格
			case 1:
				UIManager.setLookAndFeel(
				"javax.swing.plaf.metal.MetalLookAndFeel");
				break;
			// 设置Nimbus风格
			case 2:
				UIManager.setLookAndFeel(
				"javax.swing.plaf.nimbus.NimbusLookAndFeel");
				break;
			// 设置Windows风格
			case 3:
				UIManager.setLookAndFeel(
				"com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
				break;
			// 设置Windows经典风格
			case 4:
				UIManager.setLookAndFeel(
				"com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
				break;
			// 设置Motif风格
			case 5:
				UIManager.setLookAndFeel(
				"com.sun.java.swing.plaf.motif.MotifLookAndFeel");
				break;
		}
		// 更新f窗口内顶级容器以及内部所有组件的UI
		SwingUtilities.updateComponentTreeUI(f.getContentPane());  //②
		// 更新mb菜单条以及内部所有组件的UI
		SwingUtilities.updateComponentTreeUI(mb);
		// 更新pop右键菜单以及内部所有组件的UI
		SwingUtilities.updateComponentTreeUI(pop);
	}
	public static void main(String[] args)
	{
		// 设置Swing窗口使用Java风格
		//JFrame.setDefaultLookAndFeelDecorated(true);   //③
		new SwingComponent().init();
	}
}
 

接着在javaprojectdemo项目下的pom.xml文件中写下如下代码(这里面的代码尽量要看懂):
不懂可以参考官方文档:https://github.com/fvarrui/JavaPackager

github上的可能访问比较慢也可能访问失败需要特殊手段,不会的可以私信我

代码(这里面写的已经很详细,其他的就是你自己去看文档):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>hmdemo</groupId>
  <artifactId>JavaPackager_Demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  	<properties>
     	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.release>11</maven.compiler.release>
	</properties>

  <build>
  	<plugins>
  		<plugin>
    <groupId>io.github.fvarrui</groupId>
    <artifactId>javapackager</artifactId>
    <version>1.6.7</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>package</goal>
            </goals>
            <!--这个xml标签下都是写的配置文件-->
            <configuration>
                <!-- mandatory 此注释下面是强制必须的 -->
                <!--这里是你的main方法也就是程序运行类的路径地址-->
                <mainClass>com.hmedu.swing.SwingComponent</mainClass>
                <!-- optional 此注释下面的都是随意的 -->
                <!--是否在应用程序中嵌入自定义JRE。-->
                <bundleJre>true</bundleJre>
                <!--既然选择了嵌入自定义jre就要设置本地jdk安装文件夹的位置 !注意这里是jdk的位置不是jre-->
				<jdkPath>D:\Desktop\QFZL\Software\jdk11</jdkPath>
				<!--是否为应用程序生成安装程序。-->
                <generateInstaller>true</generateInstaller>
                <!--应用程序是否以管理员身份运行(具有提升的权限)。-->
                <administratorRequired>false</administratorRequired>
                <!--定义打包的目标平台,可能与执行平台不同。可能的值: auto, mac, linux, windows. auto 用于使用执行平台作为目标。-->
                <platform>windows</platform>
                <!--要包含在捆绑应用程序中的其他文件和文件夹。-->
                <additionalResources>
                	<!--java文件夹和resources文件夹都是根目录所以不需要写它们的路径-->
                    <additionalResource>demoimg</additionalResource>
                    <additionalResource>demovideo</additionalResource>
                </additionalResources>
                
                <!--linux平台相关的配置 这里不用的配置要注释不然打包的时候会报错-->
                <!--<linuxConfig>...</linuxConfig> -->
                <!--mac平台相关的配置 这里不用的配置要注释不然打包的时候会报错-->
                <!--<macConfig>...</macConfig> -->
                
                <!--win平台相关的配置-->
                <winConfig>
                		<!--图标文件/logo-->
	                    <icoFile>demoimg/xiaomi.ico</icoFile>
                		<!--设置EXE文件公司名称。-->
                	    <companyName>HammingTechnologyCompany</companyName>
                </winConfig>
            </configuration>
        </execution>
    </executions>
</plugin>
  	</plugins>
  </build>
</project>

接着右击左侧javaprojectdemo项目选择show in Local Terminal接着选择Terminal 也就是打开命令控制符控制台,输入图片中的命令后回车
javapackager 打包苹果,eclipse,java
打包好的文件生成在javaprojectdemo项目中的target文件夹下
可以选择右击target文件夹选择 show In -> System Explorer
在弹出的文件管理器中查看

javapackager 打包苹果,eclipse,java
到这里就完成了,如果遇到什么问题可以私信我,或者评论,评论可能回复比较慢不及时
javapackager 打包苹果,eclipse,java文章来源地址https://www.toymoban.com/news/detail-557734.html

如果对你有帮助请给个赞加收藏

到了这里,关于JavaPackager打包Swing程序到windows、MacOS、Linux三个平台_Eclipse版本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker安装并使用国内源(Linux、Windows、macOS)

    Windows系统安装Docker并配置国内源 安装 Docker Desktop : 访问Docker官网(https://www.docker.com/products/docker-desktop)下载适用于Windows的Docker Desktop安装包并安装。 配置国内镜像源 : 在Docker Desktop中点击顶部菜单栏的“ whale icon - Preferences - Daemon”(Windows旧版本可能是“Settings”)。 在

    2024年04月22日
    浏览(34)
  • 如何在 Linux、macOS 和 Windows 中查看 SSH 密钥?

    SSH(Secure Shell)密钥是用于身份验证和安全通信的重要组成部分。在Linux、macOS和Windows操作系统中,你可以通过一些简单的步骤来查看已安装的SSH密钥。本文将详细介绍在这些操作系统中查看SSH密钥的方法。 查看公钥 打开终端窗口。 使用以下命令查看SSH公钥: 如果你的密钥

    2024年02月13日
    浏览(37)
  • 闲置电脑挂机赚钱-Traffmonetizer,支持windows,linux,Android,MacOS多平台

    利用闲置电脑/服务器/安卓手机/树莓派来挂 Traffmonetizer 赚钱 Traffmonetizer是一个来自欧洲的流量挂机平台,类似Peer2profit,满10刀可提现(Paypal、BTC、Payoneer),注册好像就送5刀,Traffmonetizer不怎么占用CPU和内存以及流量,流量单价也比较高。 你可以用闲置的电脑、手机、VPS、云服

    2024年02月12日
    浏览(47)
  • window,macOS,Linux计算文件MD5值,java实现例子

    打开命令行工具。在Windows系统中,可以使用\\\"cmd\\\"命令打开命令行窗口;在macOS或Linux系统中,可以使用\\\"Terminal\\\"打开终端。 进入文件所在的目录。使用\\\"cd\\\"命令进入文件所在的目录。 计算文件的MD5哈希值。在命令行中输入\\\"certutil -hashfile 文件名 MD5\\\"命令(Windows系统),或者输入

    2024年02月06日
    浏览(32)
  • python程序打包(Mac/Window)

    #一级标题 摘要:python 在mac和windows 下打包 windows /mac 下打包都可以用 ##windows系统下打包成exe程序 ##Mac系统下打包生成.app应用程序 二、mac 下打包生成.app文件

    2024年02月15日
    浏览(29)
  • Cisco Secure Client 5.0.03072 (macOS, Linux, Windows & iOS, Andrord)

    Cisco Secure Client 5.0.03072 (macOS, Linux, Windows iOS, Andrord) 思科安全客户端(包括 AnyConnect) 请访问原文链接:https://sysin.org/blog/cisco-secure-client-5/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Cisco Secure Client (including AnyConnect) 思科安全客户端(包括 AnyConnect) 您的团

    2024年02月11日
    浏览(39)
  • Docker(二)安装指南:主要介绍在 Linux 、Windows 10 和 macOS 上的安装

    作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! Docker 分为 stable test 和 nightly 三个更新频道。 官方网站上有各种环境下的 安装指南,这里主要介绍 Docker 在 Linux 、 Windows 10 和 macOS 上的安装。 警告:切勿在没有配置 Docker APT 源的情况

    2024年01月20日
    浏览(63)
  • VirtualBox 7.0.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件

    VirtualBox 7.0.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件 Oracle VM VirtualBox 7 请访问原文链接:https://sysin.org/blog/virtualbox-7/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2022 年 10 月 10 日,VirtualBox 7.0.0 发布! 甲骨文今天发布了重要的新版本 Oracle VM VirtualBox,

    2024年02月17日
    浏览(55)
  • Cisco AnyConnect Secure Mobility Client 4.10.07062 (macOS, Linux, Windows)

    Cisco AnyConnect Secure Mobility Client 4.10.07062 (macOS, Linux, Windows) Cisco Secure Client(包括 AnyConnect) 请访问原文链接:https://sysin.org/blog/cisco-anyconnect-4/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 新版已发布:Cisco Secure Client 5.0.03072 (macOS, Linux, Windows iOS, Andrord) Cisco

    2024年02月12日
    浏览(51)
  • winform 程序打包成windows安装包

    前提:VS2019,winform 程序 已经有一个完整可运行的 winform 程序。VS中上方扩展选项卡,选择 管理扩展,在打开的弹窗中选择联机,在右侧搜索框搜索 installer, 在中间显示的结果选择 Microsoft Visual Studio Installer Projects 点击下载。下载完成之后,关闭vs,自动打开扩展的安装程序,

    2024年02月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包