首先在eclipse中创建Maven项目,这个应该很简单的,流程为:
接着在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上的可能访问比较慢也可能访问失败需要特殊手段,不会的可以私信我
代码(这里面写的已经很详细,其他的就是你自己去看文档):文章来源:https://www.toymoban.com/news/detail-557734.html
<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 也就是打开命令控制符控制台,输入图片中的命令后回车
打包好的文件生成在javaprojectdemo项目中的target文件夹下
可以选择右击target文件夹选择 show In -> System Explorer
在弹出的文件管理器中查看
到这里就完成了,如果遇到什么问题可以私信我,或者评论,评论可能回复比较慢不及时
文章来源地址https://www.toymoban.com/news/detail-557734.html
如果对你有帮助请给个赞加收藏
到了这里,关于JavaPackager打包Swing程序到windows、MacOS、Linux三个平台_Eclipse版本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!