`
imshare
  • 浏览: 325087 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

JFaces组件 TitleAreaDialog一些用法

阅读更多

Dialog是SWT和JFace的一个重要的组成部分,我们在开发 Plug-in或RCP的时候也经常会用到它们。这篇随笔不会介绍 SWT的Dialog,因为我想很多人都已经非常熟悉它了。在这里,我要讨论的是JFace的Dialog,或者更进一步说是JFace的 TitleAreaDialog。什么是TitleAreaDialog呢?想想我们常常用到的New XX Wizard就知道了。在我们创建一个Java Project或Class的时候,我们所使用的Wizard其实就是由TitleAreaDialog构成的。这种Dialog有如下所示的 TitleArea和一个标准的Button Bar:
    
正常的TitleArea

带有错误信息的TitleArea


标准的Button Bar

这种GUI的表现力要比SWT的 Dialog强很多,而且JFace为该 Dialog封装了很多东西,这也使开发工作变得更加简单,所以我极力推荐使用TitleAreaDialog。那么让我们来看一个最基本的 TitleAreaDialog:
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.jthin.jpssp.ide.configuration.Activator;

public class MyTitleAreaDialog extends TitleAreaDialog {

    /**
     * Create the dialog
     * 
     * @param parentShell
     */
    public MyTitleAreaDialog(Shell parentShell) {
        super(parentShell);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.dialogs.TitleAreaDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
     */
    protected Control createDialogArea(Composite parent) {
        Composite area = (Composite) super.createDialogArea(parent);
        Composite container = new Composite(area, SWT.NONE);
        container.setLayoutData(new GridData(GridData.FILL_BOTH));

        // TitleArea中的 Title
        setTitle("My TitleAreaDialog");

        // TitleArea中的 Message
        setMessage("This is a simple TitleAreaDialog example.");

        // TitleArea中的Image
        setTitleImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/Neptune.png"));

        return area;
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
     */
    protected void createButtonsForButtonBar(Composite parent) {
        createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
        createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.dialogs.TitleAreaDialog#getInitialSize()
     */
    protected Point getInitialSize() {
        return new Point(500, 375);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
     */
    protected void configureShell(Shell newShell) {
        super.configureShell(newShell);

        // Dialog Title
        newShell.setText("Test TitleAreaDialog Title");

        // Dialog Icon
        newShell.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/Neptune.png"));
    }

}


这段代码非常容易理解,从方法签名中可以看出每个方法做了什么事情。注意createButtonsForButtonBar方法,其中用 createButton方法创建了OK和Cancel这两个Button,并且把Button的默认点击事件也写好了,就是关闭该 Dialog。ResourceManager.getPluginImage是我自己编写的获得图片的helper method,这里就不讨论其实现了。这段代码会产生如下的Dialog:





有趣的是,我在这里故意使用了一个128×128的大图标, TitleAreaDialog不会自动缩小或裁减Image,而是调整TitleArea的大小来适应Image。

接下来我们要为OK Button编写我们自己的事件,例如把用户在Dialog中的输入保存到某处。有人可能会想到为OK Button添加SelectionListener,但实际上这样做是不对的,因为OK Button是JFace为Dialog封装好了的,同时JFace也提供了响应的callback:
/*
 * (non-Javadoc)
 * 
 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
 */
protected void okPressed() {
    // implement your own function here
    super.okPressed();
}


我们可以在这里实现我们自己的事件,不过最后一定要调用super.okPressed方法,否则Dialog就不会关闭了。

OK, 以上就是TitleAreaDialog的基本Framework,非常容易理解,下面我们就来在 TitleArea中动态设置一些信息。你可以把这个scenario想象成在用户输入的同时提示用户输入的合法性。TitleAreaDialog提供 了好3个方法可以动态设置TitleArea信息,具体如下:
• public void setErrorMessage(String newErrorMessage):显示传入的错误信息。(我们把用这个方法设置的信息叫做error message。)当前显示的信息会被保存起来,等到error message清空之后会再次显示,而清空error message要传入null,而不是传入空字符串。
• setMessage(String newMessage):显示传入的信息,等同于setMessage(String newMessage, IMessageProvider.NONE)。如果当前显示的是error message,那么newMessage会被保存起来,等到error message清空后再显示。
• setMessage(String newMessage, int newType):显示传入的信息,并显示指定的信息类型。可用的类型有NONE、INFORMATION、WARNING和ERROR。需要注意的是, setMessage(String newMessage, int IMessageProvider.ERROR)和 setErrorMessage(String newErrorMessage)并不相同。后者会覆盖当前的任何信息,而前者只会覆盖当前的非error message,不会影响到error message(也就是说当error message清空后才会显示)。
这 样,我们就可以为一些文本框添加ModifyListener,然后在其中设置TitleArea的信息了。

接着,再让我们来看看 Button Bar。有些时候,我们希望把OK和Cancel这种默认的Button放置在Button Bar的右侧,而把其他Button放置在Button Bar的左侧,如下图中的Customize... Button:






这又如何实现呢?有人可能想到在 createButtonsForButtonBar方法中做一些手脚,但是遗憾的是这行不通,我们真正要覆写的是createButtonBar方法, 下面是一个简单的例子:
/*
 * (non-Javadoc)
 * 
 * @see org.eclipse.jface.dialogs.TrayDialog#createButtonBar(org.eclipse.swt.widgets.Composite)
 */
protected Control createButtonBar(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 0;
    layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);

    composite.setLayout(layout);
    composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    if (isHelpAvailable()) {
        createHelpControl(composite);
    }

    createButton(composite, MyConstants.IMPORT_BUTTON_ID, "Import", false).addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            MessageDialog.openInformation(MaintainModuleDialog.this.getShell(), "Information",
                "\"Import\" button has not been implemented.");
        }
    });

    createButton(composite, MyConstants.EXPORT_BUTTON_ID, "Export", false).addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            MessageDialog.openInformation(MaintainModuleDialog.this.getShell(), "Information",
            "\"Export\" button has not been implemented.");
        }
    });

    createButton(composite, MyConstants.OTHER_BUTTON_ID, "Other", false).addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            MessageDialog.openInformation(MaintainModuleDialog.this.getShell(), "Information",
            "\"Other\" button has not been implemented.");
        }
    });

    Label filler = new Label(composite, SWT.NONE);
    filler.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
    layout.numColumns++;

    super.createButtonsForButtonBar(composite);

    return composite;
}


正如你所见,我们实际上创建了自己的Button Bar,然后在上面添加了3个Button:Import、Export和Other,最后 super.createButtonsForButtonBar会创建OK和Cancel Button。filler是用来在两组Button见占位的。代码中用到的两个convert方法来自 org.eclipse.jface.dialogs.Dialog类,你还可以在这个类中找到一个getButton(int)方法,它可以根据传入的 ID返回用createButton创建的Button。这些都是非常实用的方法。

回头看一下上面那个完整的 TitleAreaDialog图片,你会看到在Dialog左下角有一个问号符号,这其实是一个Button,点击它可以显示帮助信息,当然帮助信息是 由你来创建的。让我们看看Eclipse Search的TitleAreaDialog中的帮助信息吧:



如果我们也想实现这种帮助机制,那么就要实现如下方法:
/*
 * (non-Javadoc)
 * 
 * @see org.eclipse.jface.dialogs.TrayDialog#createHelpControl(org.eclipse.swt.widgets.Composite)
 */
protected Control createHelpControl(Composite parent) {
    // TODO Auto-generated method stub
    return super.createHelpControl(parent);
}

如果不想实现帮助机制,那么最好不要在Dialog中显示出那个问号符号,你可以覆写如下方法并永远返回false,这样就不会显示问号符号了。
/*
 * (non-Javadoc)
 * 
 * @see org.eclipse.jface.dialogs.TrayDialog#isHelpAvailable()
 */
public boolean isHelpAvailable() {
    return false;
}


那么这个酷酷的帮助机制到底是个什么东西呢?实际上,它的学名叫做DialogTray。TitleAreaDialog继承了 org.eclipse.jface.dialogs.TrayDialog 类,而TrayDialog就可以显示这种 DialogTray,是不是有点儿拗口呢?实际上,我们不仅仅可以添加帮助信息这一种DialogTray,还可以添加任意的DialogTray,现 在就让我们动手实现一个最简单的吧。代码很简单,最主要的就是要实现一个DialogTray,代码如下:
import org.eclipse.jface.dialogs.DialogTray;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;

public class MyDialogTray extends DialogTray {

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.dialogs.DialogTray#createContents(org.eclipse.swt.widgets.Composite)
     */
    protected Control createContents(Composite parent) {
        Composite container = new Composite(parent, SWT.NONE);
        final GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 2;
        container.setLayout(gridLayout);

        final Label label = new Label(container, SWT.NONE);
        label.setText("Name:");

        final Text text = new Text(container, SWT.BORDER);
        text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

        return container;
    }

}


我们只在其中创建了一个Label和一个Text,这就足够了。最后,我们为MyTitleAreaDialog添加两个Button,用来打开和关闭 MyDialogTray,代码如下:
final Button openTrayButton = new Button(container, SWT.NONE);
openTrayButton.setText("Open Tray");

final Button closeTrayButton = new Button(container, SWT.NONE);
closeTrayButton.setText("Close Tray");
closeTrayButton.setEnabled(false);

openTrayButton.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(final SelectionEvent e) {
        // this method is from TrayDialog
        openTray(new MyDialogTray());
        openTrayButton.setEnabled(false);
        closeTrayButton.setEnabled(true);
    }
});

closeTrayButton.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(final SelectionEvent e) {
        // this method is from TrayDialog
        closeTray();
        openTrayButton.setEnabled(true);
        closeTrayButton.setEnabled(false);
    }
});

最后我们会得到如下对话框:





好了,就讲这么多吧。如果能把这些东东适当地用在你的Application中,那 么效果一定非常棒。
  • 大小: 5.4 KB
  • 大小: 5.9 KB
  • 大小: 26.6 KB
  • 大小: 2.8 KB
  • 大小: 41.1 KB
  • 大小: 27.6 KB
  • 大小: 2 KB
分享到:
评论

相关推荐

    jface数据绑定

    **步骤三:** 使用`DataBindingContext`的`bindValue()`方法将这两个`IObservableValue`对象连接起来,实现数据绑定。 #### 四、数据绑定的JFace查看器 JFace查看器是Eclipse平台上用于显示列表或树形结构数据的...

    物联网_Android蓝牙双模开发_基于BLE40和BLE50的双通道蓝牙通信框架_支持多设备并发管理与自定义数据包解析的智能硬件控制SDK_适用于智能家居和工业物联网场景的蓝.zip

    物联网_Android蓝牙双模开发_基于BLE40和BLE50的双通道蓝牙通信框架_支持多设备并发管理与自定义数据包解析的智能硬件控制SDK_适用于智能家居和工业物联网场景的蓝

    thymeleaf-2.0.1.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    在线教育_微信小程序云开发_课程预约管理系统_基于腾讯云开发的智能在线课程预约平台_包含课程时间管理_学员自助预约_多维度签到核销_数据导出分析_适用于教育培训机构_健身房_企业内.zip

    在线教育_微信小程序云开发_课程预约管理系统_基于腾讯云开发的智能在线课程预约平台_包含课程时间管理_学员自助预约_多维度签到核销_数据导出分析_适用于教育培训机构_健身房_企业内

    基于改进二进制粒子群算法的含需求响应机组组合问题研究——MATLAB代码实现及复现国际学术研究A Modified Binary PSO在微电网中的创新应用

    内容概要:本文详细介绍了如何使用MATLAB实现改进二进制粒子群算法来解决含需求响应的机组组合问题。文章首先构建了机组组合问题的基本模型,定义了机组的数量及其最小和最大发电功率等参数。接着,在此基础上加入了需求响应机制,通过设置需求响应的最大可削减负荷量和补偿系数,实现了对负荷侧的管理。为了提高求解效率,采用了一种改进的二进制粒子群算法,该算法通过独特的更新策略使粒子更快更准地找到最优解。此外,还讨论了微电网调度中如何降低发电成本并确保供电稳定性,强调了需求响应在优化调度中的重要性。 适合人群:对电力系统优化、机组组合问题、需求响应机制以及改进粒子群算法感兴趣的科研人员和技术开发者。 使用场景及目标:适用于需要优化电力系统调度的研究项目或实际工程应用,旨在通过引入需求响应机制和改进的粒子群算法,降低发电成本,提高系统的灵活性和经济效益。 其他说明:文中提供的MATLAB代码示例有助于理解和复现算法的具体实现,同时提醒了一些常见的陷阱和注意事项,如负荷预测误差的影响和合理的参数选择。

    chromedriver-linux64-138.0.7153.0.zip

    chromedriver-linux64-138.0.7153.0.zip

    基干领航跟随者与滑膜控制的多智能体编队仿真控制:700行Matlab代码实现变换队形避障

    内容概要:本文详细介绍了基于领航跟随者和滑膜控制的多智能体编队仿真控制系统。首先阐述了领航跟随者策略的工作原理,即由一个领航者决定编队的整体运动方向和其他跟随者根据相对位置进行调整。接着解释了滑膜控制的作用及其在编队控制中的优势,特别是在应对环境干扰和实现精准轨迹跟踪方面的能力。文中提供了具体的Matlab代码示例,涵盖智能体初始化、障碍物检测与避障机制、领航者轨迹生成、滑膜控制器的设计以及队形变换等多个重要环节。此外,作者还分享了一些实用的经验和技术细节,如数值积分步长选择、避障算法优化等。 适合人群:对多智能体系统、编队控制、滑膜控制感兴趣的科研人员、研究生及工程师。 使用场景及目标:适用于需要理解和实现多智能体编队控制系统的场合,特别是涉及无人机编队飞行、自动驾驶车辆协同作业等领域。目标是帮助读者掌握领航跟随者策略和滑膜控制的具体实现方法,提高编队系统的稳定性和灵活性。 其他说明:文中提到的代码可以在Matlab环境下运行,提供了完整的编队控制流程演示,有助于加深对相关概念的理解。同时,文中讨论的一些优化措施也为进一步的研究提供了有价值的参考。

    常见分布函数的拟合与KS检验:Matlab边缘分布拟合与检验方法

    内容概要:本文详细介绍了如何在Matlab中进行常见分布函数的拟合及其KS检验。首先概述了几种常见的概率分布,如正态分布、对数正态分布、伽马分布、威布尔分布、指数分布、瑞利分布和极值分布等。然后通过具体的Matlab代码展示了如何生成示例数据,并利用fitdist函数对这些分布进行拟合。接下来,使用kstest函数进行了KS检验,以评估数据是否符合所拟合的分布。文中还强调了KS检验的局限性和注意事项,如参数估计的影响和p值的解释。最后,通过可视化手段进一步验证了拟合的效果。 适合人群:具备一定数学和编程基础的数据分析师、科研工作者及学生。 使用场景及目标:适用于需要对数据进行概率分布拟合和检验的实际应用场景,如金融风险评估、可靠性分析、信号处理等。目标是帮助读者掌握Matlab中分布拟合和KS检验的具体实现方法,提高数据分析能力。 其他说明:文章不仅提供了详细的代码示例,还讨论了实际应用中的注意事项,如参数估计质量、p值解释和物理意义的选择。同时,强调了KS检验作为参考工具的作用,不应过分依赖统计检验结果,还需结合业务背景做出最终判断。

    MAXHUB-V1.5.3-PRO-setup

    maxhub传屏软件

    基于 ESP32 和 GC9D01 0.71''TFT 的逼真眼睛与写轮眼绘制

    GC9D01_Rotation.h

    物联网_蓝牙50_BLE低功耗通信_基于ESP32芯片的智能家居设备无线控制系统_实现多设备互联与远程监控的跨平台解决方案_包含Android和iOS移动端应用开发_支持MQTT.zip

    物联网_蓝牙50_BLE低功耗通信_基于ESP32芯片的智能家居设备无线控制系统_实现多设备互联与远程监控的跨平台解决方案_包含Android和iOS移动端应用开发_支持MQTT

    iOS开发_AVFoundation框架_Swift编程语言_本地音频播放_网络音频流媒体_后台播放功能_耳机线控支持_UI界面设计_音乐播放器Demo_项目结构优化_错误处理机制.zip

    iOS开发_AVFoundation框架_Swift编程语言_本地音频播放_网络音频流媒体_后台播放功能_耳机线控支持_UI界面设计_音乐播放器Demo_项目结构优化_错误处理机制

    DT决策树回归预测MATLAB代码详解:清晰注释,轻松读取EXCEL数据,适合初学者上手使用

    内容概要:本文详细介绍了如何使用MATLAB实现决策树回归模型,具体步骤包括数据读取、数据预处理、模型训练、预测与评估以及结果可视化。文中提供了完整的代码示例,并针对每个步骤给出了详细的注释和解释,确保读者能够轻松理解和上手。此外,还讨论了决策树回归模型的优点和局限性,如解释性强但易过拟合的问题,并给出了一些优化建议。 适合人群:具备基本编程技能并对机器学习感兴趣的初学者,尤其是希望通过MATLAB快速入门决策树回归模型的人。 使用场景及目标:适用于需要进行回归预测的实际项目,如房价预测、温度预测等。通过学习本文,读者可以掌握如何利用MATLAB实现决策树回归模型,理解模型的工作原理及其应用场景。 其他说明:文中强调了代码实现过程中的一些注意事项,如数据格式、路径设置等,并提供了一些常见的解决方案和优化技巧,帮助读者更好地应对实际问题。

    chromedriver-win64-138.0.7158.0.zip

    chromedriver-win64-138.0.7158.0.zip

    基于储能电站服务的冷热电多微网系统双层优化配置的MATLAB实现与仿真分析

    内容概要:本文详细介绍了基于储能电站服务的冷热电多微网系统的双层优化配置方法及其MATLAB代码实现。文章首先阐述了冷热电多微网系统的重要性和储能电站在其中的关键作用,随后讲解了双层优化配置的概念,即上层优化关注系统宏观目标(如成本最小化、能源利用率最大化),下层优化侧重于各微网系统的具体运行情况。文中提供了具体的MATLAB代码示例,包括上层和下层优化的实现方式,并通过实例展示了如何使用CPLEX求解器进行优化。此外,文章还探讨了模型的实际应用效果,指出相比于传统单层优化,双层优化能够使系统运行成本降低15%-20%,特别是在储能的削峰填谷方面表现出色。最后,作者分享了一些调试经验和实用技巧,如延迟约束生成、结构化数据管理和迭代过程中的收敛判断等。 适用人群:从事能源系统优化的研究人员和技术人员,尤其是对MATLAB和CPLEX有一定了解的读者。 使用场景及目标:适用于需要对冷热电多微网系统进行优化配置的工程项目,旨在通过合理的储能电站配置和调度策略,实现能源利用效率的最大化和系统运行成本的最小化。 其他说明:文章不仅提供了理论指导,还附带了详细的代码实现,便于读者理解和实践。对于初学者而言,建议逐步学习并调试代码,掌握双层优化配置的核心思想和关键技术。

    三菱FX5U七轴标准程序详解:轴点动、回零、相对与绝对定位全面解析,手把手教你编写控制程序,程序流程清晰明了,附带触摸屏操作指南

    内容概要:本文深入解析了三菱FX5U PLC七轴控制系统的标准程序,涵盖主控程序、点动/回零/定位控制、手动模块、复位程序以及生产计数模块。主控程序利用状态寄存器进行模式切换,确保各模块独立运作;点动模式通过PLSY指令控制电机正反转,绝对定位采用DRVA指令,回零则使用ZRN指令;手动模块加入双线圈互锁设计防止误操作;复位程序包含状态检测,确保安全复位;生产计数模块通过上升沿触发避免计数异常。此外,文章还介绍了触摸屏程序的设计要点和调试过程中的一些常见问题及其解决方案。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对三菱PLC编程有一定基础的人群。 使用场景及目标:适用于需要理解和掌握三菱FX5U PLC七轴控制系统的设计和调试的技术人员。主要目标是帮助读者理解各个功能模块的工作原理,提高编程效率和系统稳定性。 其他说明:文中提供了大量实际应用中的经验和技巧,有助于读者在实际工作中避免常见的错误,提升工作效率。

    【图像分割】基于matlab双目标遗传算法NSGAII优化PCNN图像分割【含Matlab源码 13257期】.zip

    985研究生,Matlab领域优质创作者 (1)如需代码 加腾讯企鹅号,见评论区或私信; (2)代码运行版本 Matlab 2019b (3)其他仿真咨询 1 完整代码包运行+运行有问题可咨询 2 期刊或论文复现; 3 程序定制; 4 期刊写作或指导; 5 科研合作;

    mybatis-3.5.1.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    detection method(1)(1)(1) (1).pdf

    detection method(1)(1)(1) (1)

Global site tag (gtag.js) - Google Analytics