Eclipse生成Swing应用程序以及用Java Web Start发布

eclipse开发java swing项目 需要安装windowbuilder插件,参考 https://blog.youkuaiyun.com/u010963948/article/details/82980164 另外,youtube提到一种本地安装方法,单独去官网下载windowbuilder, ​​​​​ 阅读详情

Eclipse生成Swing应用程序的基本过程及示例

一、Swing工程

1、新建一个项目

项目->Java->Java项目,然后点击“下一步”,给项目命名为“SwingTest”,点击“完成”。

2、新建一个包

在刚才建立的项目上,点击右键,新建->包,命名为“src”,点击“完成”。

3、新建一个类

在刚才建立的包上,点击右键,新建->类,命名为“ButtonDemo”,点击“完成”。

代码如下:

/* 履歴

 * Copyright Intec Dalian Center, All Rights Reserved

 *

 * 富山大学教育研究活動等

 * 業績データベースシステム

 *

 * パッケージ名:

 * クラス名    :ButtonDemo.java

 *

 * 作成者      :Industrial Systems Dept. 0B6167

 *

 * バージョン  :1.00 2004-7-14

 *

 */

package src;

 

import javax.swing.*;

import javax.swing.border.*;

import javax.swing.event.*;

import java.awt.*;

import java.awt.event.*;

 

// The main program class

public class ButtonDemo extends JFrame implements ActionListener {

 

    // GUI objects displayed in the frame window

    ButtonGroup group; // Groups radio buttons

    JRadioButton redButton; // First radio button

    JRadioButton whiteButton; // Second radio button

    JRadioButton blueButton; // Third radio button

    JPanel colorBox; // Displays selected color

    JCheckBox showColorsButton; // First check box

    JCheckBox exitOnCloseButton; // Second check box

    JButton exitButton; // Plain button

 

    // Constructor initializes the GUI objects and panels

    public ButtonDemo() {

 

        // Select local system look and feel

        try {

            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

            //    UIManager.getCrossPlatformLookAndFeelClassName());

        } catch (Exception e) {

        }

 

        // End program when window closes

        addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e) {

                System.exit(0);

            }

        });

 

        //==========================================================

        // Radio button panel and GUI objects

        //==========================================================

 

        // Create radio button panel and an inner pane

        // to help display the GUI objects neatly

        JPanel radioPane = new JPanel();

        JPanel innerRadioPane = new JPanel();

        radioPane.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

        innerRadioPane.setLayout(new BoxLayout(innerRadioPane, BoxLayout.Y_AXIS));

        innerRadioPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

 

        // Construct the radio group and its buttons

        // All button events go to the program's ActionListener

        group = new ButtonGroup();

        redButton = new JRadioButton("Red  ");

        whiteButton = new JRadioButton("White");

        blueButton = new JRadioButton("Blue ");

        whiteButton.setSelected(true); // Select one button

        redButton.addActionListener(this); // See ActionPerformed()

        whiteButton.addActionListener(this);

        blueButton.addActionListener(this);

        group.add(redButton); // The group ensures that when one

        group.add(whiteButton); // button is selected, the previously

        group.add(blueButton); // selected button is turned off

 

        // Construct a small panel for displaying the selected color

        colorBox = new JPanel();

        colorBox.setBackground(Color.white);

        colorBox.setPreferredSize(new Dimension(50, 50));

 

        // Add the GUI objects to the inner radio pane

        innerRadioPane.add(redButton);

        innerRadioPane.add(whiteButton);

        innerRadioPane.add(blueButton);

        innerRadioPane.add(Box.createRigidArea(new Dimension(0, 25))); // Spacer

        innerRadioPane.add(colorBox);

 

        // Add the inner pane to the raised radio panel (left side)

        radioPane.add(innerRadioPane);

 

        //==========================================================

        // Check box panel and GUI objects

        //==========================================================

 

        // Create check box panel and an inner panel

        // for a neat appearance

        JPanel checkPane = new JPanel();

        JPanel innerCheckPane = new JPanel();

        checkPane.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

        innerCheckPane.setLayout(new BoxLayout(innerCheckPane, BoxLayout.Y_AXIS));

        innerCheckPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

 

        // Create the "show colors" check box object and

        // enable or disable the color radio buttons

        showColorsButton = new JCheckBox("Show colors");

        showColorsButton.setSelected(true);

        showColorsButton.addChangeListener(new ChangeListener() {

            public void stateChanged(ChangeEvent e) {

                boolean t = showColorsButton.isSelected();

                redButton.setEnabled(t); // Enable or disable all

                whiteButton.setEnabled(t); // radio buttons depending on

                blueButton.setEnabled(t); // state of check box

            }

        });

 

        // Create the "exit on close" check box object and

        // enable or disable the Exit Program button

        exitOnCloseButton = new JCheckBox("Exit on close");

        exitOnCloseButton.addChangeListener(new ChangeListener() {

            public void stateChanged(ChangeEvent e) {

                boolean t = exitOnCloseButton.isSelected();

                exitButton.setEnabled(t);

            }

        });

 

        // Create the plain "Exit Program" button

        // and its action event listener

        exitButton = new JButton("Exit Program");

        exitButton.setEnabled(false); // Initially disabled

        exitButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }

        });

 

        // Add the buttons to the inner pane

        innerCheckPane.add(showColorsButton);

        innerCheckPane.add(exitOnCloseButton);

        innerCheckPane.add(Box.createRigidArea(new Dimension(0, 50)));

        innerCheckPane.add(exitButton);

 

        // Add the inner pane to the raised check box panel

        checkPane.add(innerCheckPane);

 

        // Add the panels and GUI objects to the frame's content pane

        Container content = getContentPane();

        content.setLayout(new GridLayout(1, 3, 2, 2));

        content.add(radioPane);

        content.add(checkPane);

    }

 

    // Change the colorBox background color when user

    // selects a radio button.

    public void actionPerformed(ActionEvent e) {

        Color c;

        if (redButton.isSelected())

            c = Color.red;

        else if (whiteButton.isSelected())

            c = Color.white;

        else

            c = Color.blue;

        colorBox.setBackground(c);

    }

 

    // Main program simply constructs the ButtonDemo

    // application object, and then sizes and shows the window

    public static void main(String[] args) {

        ButtonDemo app = new ButtonDemo();

        app.setTitle("Button and Check Box Demo");

        app.setSize(320, 240);

        app.show();

    }

}

 

4、运行新建的类

运行->运行为->2.java应用程序

 

如果一切正常,OK,可以进行打包了。

5、打Jar包

项目上右键->导出->JAR文件,下一步,然后选择存放路径,如图1。然后继续下一步,到选择程序入口点的类。如图2。然后完成。Jar包就打好了。

                                                 图1

 

                                                        图2

 

 二、配置Java Web Start

1、  在tomcat的webapps文件夹下,新建一个文件夹,命名为“SwingTest”,然后把我们打好的jar包,放进来。

2、  同时,在新建两个文件,一个是index.html,一个是index.jnlp

内容分别如下:

Index.html

<a href="index.jnlp">Launch Application</a>

 

index.jnlp

<?xml version="1.0" encoding="utf-8"?>

<jnlp spec="1.0+" codebase="http://localhost:8080/SwingTest" href="index.jnlp">

<information>

         <title>HelloWorld</title>

         <vendor>IBM - JWS example of HelloWorld</vendor>

         <description>HelloWorld - Example of JWS</description>

         <description kind="short">HelloWorld example</description>

</information>

<resources>

<j2se version="1.4"/>

<jar href="hello.jar"/>

</resources>

<application-desc main-class="src.ButtonDemo"/>

</jnlp>

3、  在tomcat的conf文件夹下,修改server.xml文件,增加这么一段话,具体路径按照个人具体情况来进行修改。

<Context path="/ SwingTest " reloadable="true" docBase="D:/jakarta-tomcat-4.1.30/webapps/SwingTest"/>

OK,到这里我们应该都配置好了,下面,让我们启动tomcat,来运行试一试。

在浏览器中输入http://localhost:8080/SwingTest/index.html,如果没有问题,应该出现下图所示。

 

如果这一切都出来,恭喜你,一个简单的Java Web Start发布Swing应用程序已经成功完成了。

Java游戏化学习:从Swing小游戏到Spring Boot全栈实战 Java作为一门面向对象的编程语言,其核心在于通过类与对象来模拟现实世界,实现代码的封装、继承和多态。理解其内存管理机制和JVM工作原理,是编写高性能、高可靠性应用的基础。在工程实践中,Java广泛应用于企业级Web开发、移动应用后端和大数据处理等领域。本文以游戏开发为切入点,通过构建Swing图形界面程序,自然引入事件驱动、集合框架等核心概念,并巧妙融入对OutOfMemoryError内存溢出问题的实战排查,以及使用Lombok简化代码的工程实践,最终将项目演进为结合Spring Boot的Web全栈应 阅读详情

相关推荐

BurpSuite插件开发实战:Cookie提取与插件管理工具实现

在Web安全测试领域,HTTP协议是数据交互的基石,而Cookie作为维持会话状态的关键机制,其管理与分析直接影响测试效率。理解Cookie的组成、传输原理及安全属性,是进行会话劫持、权限绕过等安全测试的基础。通过编程实现自动化Cookie提取与解析,能够将繁琐的手动操作转化为高效的技术流程,极大提升渗透测试与漏洞挖掘的作业效率。BurpSuite作为主流的Web安全测试平台,其开放的API允许开发者扩展核心功能,例如监听HTTP流量、解析请求信息和管理扩展插件。本实战项目聚焦于开发一款集成Cookie精准

ciqiaofu0192的博客 395

一步一步教你使用Eclipse如何创建Swing项目(一)

第一步当然少不了配置你的eclipse环境了,需要在你的eclipse里按照一个很重要的插件:WindowBuilder插件。 以下是按照方式: 一、直接在eclipse的Help-&gt;eclipse marketplace,中直接搜索内容:WindowBuilder, 如图所示 二、在线更新,亦可安装包更新 download界面下面有个【List of Projects】,找到w...

南北雪树的专栏 2万+

Ubuntu 20.04 安装 Jenkins 实操指南:避坑、Java 配置与 deb 包部署

Jenkins 是持续集成(CI)与持续交付(CD)的核心开源工具,其运行依赖稳定的 Java 运行时环境、系统服务管理机制及安全的软件源配置。在 Ubuntu 20.04 这一广泛使用的 LTS 系统中,因 OpenJDK 版本滞后、apt-key 弃用、systemd 集成要求高等原因,原生安装极易失败。本文从 Java 兼容性原理出发,解析 G1 垃圾回收参数适配、headless 模块缺失等底层技术问题;强调采用 Eclipse Temurin JDK 11 和 Jenkins 官方 Debian

weixin_33795093的博客 420

如何用Eclipse创建一个JavaSwing的项目

创建之前必须先给开发工具安装WindowBuilder插件(安装方法可自行百度) 方式一: 创建项目 new--other--WindowBuilder--SWT Designer----SWT/JFace java Project 创建类new--other----WindowBuilder→Swing Designer→Application Window.即可......

lingerlan510的博客 1万+

Java实现类人化鼠标模拟:绕过检测的自动化测试与RPA实战

在自动化测试和机器人流程自动化(RPA)领域,模拟用户输入是核心技术之一。传统的鼠标移动方法通过直线瞬移实现点击,虽然功能上可行,但其机械化的轨迹极易被反作弊和风控系统识别。为了提升脚本的隐蔽性和可靠性,需要模拟更接近真人操作的鼠标行为,这涉及到运动轨迹生成、随机噪声注入和人类行为学模型的应用。通过引入贝塞尔曲线、费茨定律等算法,可以生成带有加速、减速和随机抖动的自然移动路径,从而有效绕过基础检测。这种技术对于需要长时间稳定运行的自动化数据采集、GUI测试和游戏脚本开发具有重要价值。本文以Java的Natu

weixin_30855099的博客 415

BurpSuite 2020.12与Java 15环境配置及性能调优实战指南

Java环境配置是Web应用安全测试的基础环节,其核心原理在于为Java应用程序提供必要的运行时支持。在渗透测试领域,稳定的Java环境能确保安全工具如BurpSuite的可靠运行,避免因版本不匹配导致的启动失败、界面异常等兼容性问题,从而提升测试效率与准确性。BurpSuite作为行业标杆的Web漏洞扫描与代理工具,其功能实现深度依赖于Java虚拟机。通过合理配置JVM参数、环境变量及代理设置,可以优化工具性能,更好地应对大规模请求处理与复杂扫描场景。本文聚焦于BurpSuite 2020.12与Java

weixin_33692284的博客 325

关于JAVA SWING程序的发布

闲来无事,在网上找了一些朋友的学习资料,对JAVA SWING工程的发布进行了一个

zyujie的专栏 4987

Burp Suite 2025.10专业版全平台部署与Java 21环境配置指南

Java作为广泛使用的编程语言,其运行环境是众多安全与开发工具的基础支撑。Java 21作为最新的长期支持版本,通过引入虚拟线程、分代ZGC等特性,在并发处理性能和垃圾回收效率上实现了显著提升,这为构建高性能、高稳定的应用提供了底层保障。在Web应用安全测试领域,Burp Suite作为核心的渗透测试工具,其2025.10专业版强制要求Java 21环境,正是为了充分利用这些现代化特性,以优化扫描速度、降低资源开销并增强工具在复杂测试场景下的响应能力。本文聚焦于这一关键升级,详细解析如何在Windows、L

weixin_33744141的博客 460

Java使用IntelliJ IDEA创建一个基于Swing的GUI图形化程序,打包发布为jar

1、创建GUI窗体 首先,直接新建一个默认的空的Java模块即可,随便取个名字 之后再src目录下右键,新建,创建一个Swing的GUI窗体,随便取个名字 给主窗体改个名字 到java代码中生成一个窗体函数,并修改窗体大小 点击左边运行即可 2、接下来添加一个按钮 从右边拖一个按钮到设计界面来,改一下text属性显示的值 为按钮添加动作,来到按钮页面,创建一个侦听器,选择actionlistening 添加动作代码 3、打包发布

小哈里的博客 1万+

Eclipse下写Swing的一个例子

外网下的,还是可以的。对于初学者有用。其实,swing的GUI方式和C#感觉差不太多。英文的,不过很容易理解

CANoe软件之离线报文回放与分析实战

本文详细介绍了如何使用CANoe软件进行离线报文回放与分析,帮助工程师将现场故障数据转化为可反复研究的实验室资源。通过实战步骤,指导如何搭建分析工程、加载DBC文件解码信号,并利用Trace和Graphics窗口进行深度数据筛选与图形化分析,从而高效定位汽车电子故障,是提升诊断效率的关键技能。

weixin_29227585的博客 527

J2EE基于SWT和Java Web Start的应用程序解决方案

摘要:作为一种优秀的程序设计语言,Java在许多方面具有突出的优越性。特别是在企业级应用领域,J2EE的地位至今尚无人能够替代。在实际开发过程中,构建于J2EE体系之上的应用系统常常采用基于浏览器的B/S结构来实现前台表现。这种结构不但免去了繁琐的程序分发工作,而且使得应用系统易于维护和升级。但是,在获得上述优点的同时,它也带来了诸如界面控制过于复杂

oicqren的专栏 1376

ENVI 5.6保姆级教程:高分七号DLC影像从打开到融合的完整流程(附避坑指南)

本文详细介绍了ENVI 5.6处理高分七号DLC影像的完整流程,包括环境准备、数据解压、正射校正、图像融合等关键步骤。特别针对国产卫星数据处理的独特挑战,提供了实用的避坑指南和优化技巧,帮助用户高效完成光学影像的预处理和质量提升。

weixin_33269743的博客 382

J2EE的另一张面孔:基于SWT和Java Web Start的应用程序解决方案

J2EE的另一张面孔:基于SWT和Java Web Start的应用程序解决方案第1部分 李凤桐(河北财华信息技术有限公司,河北石家庄 050000) 摘要:作为一种优秀的程序设计语言,Java在许多方面具有突出的优越性。特别是在企业级应用领域,J2EE的地位至今尚无人能够替代。在实际开发过程中,构建于J2EE体系之上的应用系统常常采用基于浏览器的B/S结构来实现前台表

phoenixtree的专栏 1367

(11-3-03)多任务与元强化学习:综合实战:基于元强化学习的迷宫导航系统(3)

本文介绍了策略网络隐空间可视化的实现方法及其在强化学习中的应用。通过设计visualize_latent_space函数,使用t-SNE算法将高维隐空间特征降维至二维进行可视化,直观展示策略网络在不同任务中的特征分布。文章详细阐述了实现流程:状态收集、t-SNE降维和可视化绘图,并提供了完整的Python代码示例。实验结果表明,该方法能有效分析策略网络的学习过程与适应能力,为优化模型提供重要依据。同时,文章还介绍了主程序的完整流程,包括环境初始化、元智能体训练与评估、学习策略比较等环节,最后对实验结果进行可

码农三叔 1041

揭秘大厂 Unity 红点系统设计:别小看右上角那颗小红点,它能把你项目搞崩

本文详细探讨了游戏大厂如何设计高性能红点系统。红点作为提升用户活跃和转化率的重要工具,需要支持多级联动、动态判断和全局一致性。系统采用观察者模式和树形结构,分为数据管理、逻辑判定、订阅通知和UI展示四大模块,通过事件驱动方式实现高效刷新。文章特别强调了解耦设计、配置化管理和性能优化,并提出了热更新、数据分析等高级应用场景。最终指出,优秀的红点系统需要架构标准化、自动化配置和团队紧密协作,是大型游戏项目的关键技术基础。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 377

在html中嵌入java_在html中嵌入java swing

我有我的java swing应用程序的以下代码,它在eclipse IDE中执行得很好,但是当我将它嵌入到HTML中时,不会在浏览器中执行,只显示空白框。在html中嵌入java swing的Java Swing代码:在它嵌入import javax.swing.*;import java.applet.*;import java.awt.*;public class Form extends J...

weixin_35107169的博客 2840

android 如何分析应用的内存(十六)——使用AS查看Android堆

在前面,先介绍了如何使用jdb和VS code查看应用栈相关内容。本文将介绍,如何查看堆中的内容。

安仔的博客 4252

基于SWT和Java Web Start的应用程序解决方案

J2EE的另一张面孔:基于SWT和Java Web Start的应用程序解决方案第1部分 李凤桐(河北财华信息技术有限公司,河北石家庄 050000) 摘要:作为一种优秀的程序设计语言,Java在许多方面具有突出的优越性。特别是在企业级应用领域,J2EE的地位至今尚无人能够替代。在实际开发过程中,构建于J2EE体系之上的应用系统常常采用基于浏览器的B/S结构来实现

习惯的魅力 1491

“详规一张图”——上海土地利用数据

本文围绕城市规划与土地管理中空间数据的重要性,介绍了基于地理信息系统(GIS)技术对上海市用地数据进行获取与处理的具体方法。文章以上海市为例,详细阐述了如何通过构建以10米为间隔的网格点覆盖全市范围,并采用GET请求方式从“上海用地规划官网:详细规划‘一张图’公众版”平台获取地块信息的过程。通过对API接口参数的设置,包括坐标系、几何类型和返回格式等,实现了对每个网格点对应地块的属性信息(如规划用地类型、容积率、地块编号等)及几何形状信息的提取。

weixin_45812624的博客 2197

外骨骼机器人(五):步态分析之正常步态

研究病理步态之前,需要了解正常步态,作为判断标准。但是需要记住两个问题:1.“正常”因人而异,性别、年龄、身体情况都需要考虑在内,因此,需要对不同的个体选择合适的正常标准;2.即使病人的步态与正常步态有某种不同,这也不能说明这是不可取的,也不能说明应该把它变成“正常”步态。许多步态异常是对病人的一些问题的一种补偿,尽管异常,但它们仍然是有用的。步态周期的定义是连续为两次发生重复行走事件之间的时间间隔。尽管可以选择任何事件来定义步态周期,但通常使用一只脚接触地面的瞬间(“初始接触”)是方便的。

行者无疆的博客 1991

Java Web Start 入门基础教程

Java Web Start 入门基础教程 关于Web Start的JNLP Specification可以到sun网站http://java.sun.com/products/javawebstart/download-spec.html下载。 下面是用最简单的HelloWorld方法实现一个Java Web Start的例子,工程webstart目录结构如下: 目录...

moonsee 369

纳米尺度仿真软件:GROMACS_(3).分子动力学模拟原理

分子动力学(MD)模拟是一种强大的计算方法,通过数值积分牛顿运动方程,追踪粒子在时间上的位置和速度变化,提供关于体系动力学行为的详细信息。选择合适的力场、设置初始条件、应用边界条件、控制温度和压力、选择合适的时间步长、计算能量和力,是 MD 模拟的关键步骤。通过这些步骤,可以对各种化学、生物和材料体系进行模拟和分析,揭示其结构、动力学和热力学性质。高级应用如反应路径模拟和蛋白质折叠研究,进一步扩展了 MD 模拟的应用范围。

kkchenjj的博客 1100

关于swt

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 鱼与熊掌不可得兼?到现在为止,我们已经介绍了用于解决现有J2EE开发模式缺点的两项关键性技术:一是SWT,主要用作客户端程序的界面表现;二是Java Web Start,主要用作客户端程序的网络发布。接下来的问题便是如何将其融合到J2EE的架构之中去

§为艺术而技术§ 1497

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

跨平台安装BurpSuite:解决光标偏移与Java GUI兼容性问题

Java Swing作为经典的跨平台GUI工具包,其核心原理是通过自绘控件实现“一次编写,到处运行”的设计理念。然而,这种抽象层在应对不同操作系统的图形子系统时,常面临渲染兼容性挑战,尤其是在高DPI显示和新兴显示协议环境下。其技术价值在于为Java生态提供了统一的界面开发框架,但实际工程中需要针对特定平台进行环境调优。在Web安全测试领域,BurpSuite作为基于Swing的标杆工具,其安装过程常因Java环境配置和GUI渲染问题受阻,其中光标偏移现象在macOS和Linux Wayland环境下尤为典

weixin_34133829的博客 514

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java实现QSP游戏解释器:从脚本解析到跨平台播放器开发

游戏引擎是驱动互动体验的核心系统,它通过解析脚本指令、管理游戏状态和渲染界面来实现复杂的逻辑交互。其技术价值在于将创意转化为可执行的程序,广泛应用于文字冒险、角色扮演等叙事驱动型游戏开发。QSP(Quest Soft Player)作为一种经典的文字冒险游戏引擎,以其轻量级脚本语言著称,但原生态跨平台支持有限。通过Java实现QSP解释器,开发者能够深入理解脚本解析、状态机设计等底层原理,同时利用Java“一次编写,到处运行”的特性,构建支持Windows、macOS、Linux等多平台的游戏播放器。本项目

weixin_30938149的博客 364

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: JAR 文件揭密
下一篇: Swing中快捷键的问题[TextArea]
ildd
博客等级 码龄24年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值