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模板网!

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

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

相关文章

  • 查看服务器的监听端口(Windows、Linux、MacOS)

    打开命令行窗口(Windows)或终端(Linux/MacOS)。 输入以下命令: 按下回车键,将会列出所有正在监听的端口及其对应的进程ID。 如果需要查看某个特定端口的监听情况,可以使用以下命令: 其中,将“端口号”替换为需要查看的端口号。 如果需要查看进程ID对应的进程名称

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

    如何在 Linux、macOS 和 Windows 中查看 SSH 密钥?

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

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

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

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

    闲置电脑挂机赚钱-Traffmonetizer,支持windows,linux,Android,MacOS多平台

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

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

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

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

    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日
    浏览(30)
  • Cisco Secure Client 5.0.03072 (macOS, Linux, Windows & iOS, Andrord)

    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日
    浏览(9)
  • Docker(二)安装指南:主要介绍在 Linux 、Windows 10 和 macOS 上的安装

    Docker(二)安装指南:主要介绍在 Linux 、Windows 10 和 macOS 上的安装

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

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

    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日
    浏览(19)
  • Windows&Ubuntu下python程序打包

    Windows&Ubuntu下python程序打包

    2024年02月04日
    浏览(0)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包