. 说明
B/S架构的系统,一般后台是java语言,前台是html+js,控件对象是在前台加载运行,所以与后台java语言没有关系,调用控件函数直接使用js语言,然后js再与后台java语言通信。
如果想要在后台处理DWG图纸,比如转pdf,jpg,或提取信息,这时就需要java调用控件了,因控件提供开发API是使用COM技术封装,所以java需要使用jacob库来调用,java如何调用COM接口,可以百度Java COM 调用,先学习一下java如何调用COM。
2. java调用控件API流程
2.1、下载控件
在http://www.mxdraw.com/download.html下载控件最新安装包,如下 :
下载的是一个exe程序,它是一个自解压缩包,双击直接解压,在解压目录下有如下文件:
管理员方式运行”RegMxDrawX.bat”注册控件,或直接运行MxDrawx86Setup(20200624).exe程序安装控件。
2.2、在Eclipse中使用JAVA调用
下载http://www.mxcad.net:2080/JavaCom.rar,java包,该包可以让java调用com组件。
然后双击解压,得到如下文件:
把jacob-1.17-M2-x64.dll,jacob-1.17-M2-x86.dll拷到
java/jdk/bin 目录下,java/jre/bin目录下,和C:/Windows/system32
新建一个JAVA工程
2.3、编写代码,调用控件
下面代码,打开1.dwg图纸,然后转成一个jpg文件。
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class MyTest {
public static void main(String[] args) {
//com组件调用
ActiveXComponent smsg=new ActiveXComponent("MxDrawX.MxDrawService");
// 获取Active对象
Dispatch msg=smsg.getObject();
// 调用组件方法,打开指定dwg文件
Variant v=msg.call(msg, "open", "e:/1.dwg");
System.out.println(v);
Object[] colorparams=new Object[] { 255, 255, 255 };
msg.call(msg, "SetViewColor", colorparams);
// 参数 jpg保存路径,位图宽度方向的像素,-1取系统默认值:1000 ,位图宽度方向的像素,-1取系统默认值:1000
Object[] params=new Object[] { "e:/1.jpg", 600, 860 };
//将打开的dwg图纸,保存为jpg文件.
msg.call(msg, "WriteJpg", params);
//关闭打开的dwg文件
msg.call(msg, "close");
smsg.safeRelease();
}
};
2.3、MxDrawService说明
MxDrawService是专门提供的一个,服务器后台调用组件,它可以在不需要控件界面时,调用控件相关接口,更多该组件的函数的说明,可以参考控件安装目录下:MxDraw5.2Help(20200624).chm文件:
3. 技术建议
在服务器后台自动处理DWG图纸,比DWG图转pdf,jpg,图纸剪切,等费时操作时,尽量把这块工作写到一个单独的exe程序中(控制台程序也行),然后在java服务后台程序调用该exe进程,把要处理的图纸通过命令行参数传给进程,进程处理好后,把结果写到一个约定位置的json文件,java后台程序只需要在一个时种中每过几秒去看一下那个json文件是否生成,得到处理结果,这样有三个好处:费时操作不会阻塞java服务主进程,处理程序如果崩溃不会影响主进程,可以轻松做多到多进程同时处理多个图纸。
天这篇文章我们主要来看一下表单的控件都有哪些,如何使用表单标签,与用户交互。
(1)网站怎样与用户进行交互?
答案是使用HTML表单(form)。表单是可以把浏览者输入的数据传送到服务器端,这样服务器端程序就可以处理表单传过来的数据。
使用语法:<form method="传送方式" action="服务器文件"></form>
详细讲解:
1、<form> :<form>标签是成对出现的,以<form>开始,以</form>结束。
2、action :浏览者输入的数据被传送到的地方,比如一个PHP页面(save.php),后台可以通过这个文件来接收前端传过去的数据资料并进行分析处理。
3、method : 数据传送的方式(get/post),get多用于获取数据,post多用于提交数据(关于这一块大家可以简单了解一下即可,后期我们会在网站制作的时候进行讲解)。
注意:所有表单控件(文本框、文本域、按钮、单选框、复选框等)都必须放在 <form></form> 标签之间(否则用户输入的信息可提交不到服务器上哦!)。
(2)表单控件介绍
1)文本输入框、密码输入框
当用户要在表单中键入字母、数字等内容时,就会用到文本输入框。文本框和密码框只有type类型的区别,其它的写法是一样的。
使用语法:
文本输入框:<input type="text" name="文本名称" value="文本内容" placeholder="文本提示信息" />
密码输入框:<input type="password" name="密码名称" value="密码信息" placeholder="密码提示信息" />
详细讲解:
1、type:当type="text"时,输入框为文本输入框,输入的文字是可以看见的;当type="password"时, 输入框为密码输入框,输入的文字内容是无法看见的。
2、name:为文本框/密码框命名,以备后台程序使用。
3、value:为文本输入框输入的内容。
4、placeholder:当我们的value内容为空的时候显示,用于提示输入框输入信息格式;
使用练习:我们创建一个表单,表单里边包含用户名和密码输入框。具体的代码如下图所示:
在网页中的显示效果如下所示:
2)多行文本输入框
上边文本输入框用于输入单行的文本内容,当用户需要在表单中输入大段文字时,需要用到文本输入域。
使用语法:<textarea rows="行数" cols="列数" placeholder="多行文本提示信息" >文本</textarea>
详细讲解:
1、<textarea>标签是成对出现的,以<textarea>开始,以</textarea>结束。
2、cols:用于控制多行输入域的列数,rows :用于控制多行输入域的行数。
3、placeholder:当我们的textarea内容为空的时候显示,用于提示输入框输入信息格式;
使用练习:我们创建一个新的表单,表单里边包含用户名和密码输入框和用户个人简介多行输入框。具体的代码如下图所示:
我们再网页中的显示效果就如下图所示:
好了,本篇文章就先给大家介绍这两个表单控件的语法以及使用,下篇文章我们将介绍下拉框、选择框、多选框的语法及使用,记得要多加练习才是王道。
每日金句:把每一件简单的事做好就是不简单;把每一件平凡的事做好就是不平凡。喜欢我的文章的小伙伴记得关注一下哦,每天将为你更新最新知识。
最新的DevExpress WinForm版本中,开发者可以使用WinForm产品线(通过DevExpress AlertControl和ToastNotificationManager)创建两种类型的通知/警报,最近技术团队还推荐使用DevExpress ToastNotificationManager来显示原生 Windows 10+ 通知。
DevExpress Universal Subscription官方最新版免费下载试用,历史版本下载,在线文档和帮助文件下载-慧都网
尽管自定义选项有些有限(toast 仅提供九个布局模板),但ToastNotificationManager 代表了比传统的基于面板的AlertControl更好、更现代的替代方案。
在最新版中为AlertControl发布的HTML & CSS 模板,允许开发人员创建时尚的警告通知,同时可利用AlertControl 本身的简单性。下图说明了技术团队提供的一些示例模板(查找您喜欢的模板并将其复制到项目中):
大多数通知只是一个带有几个文本块、图像和按钮的矩形,设计这样简单的对象对每个人来说都应该相对容易——无论您有 HTML 和 CSS 经验,还是开始在WinForms 应用程序中利用其潜力。 例如以下模板创建一个带有图标、标题、描述和“确定”按钮的通知。
<div class="container">
<div class="popup">
<img src="${SvgImage}" class="image" />
<div class="caption">Notification Title</div>
<div class="text">This notification uses a web-inspired template.</div>
<div id="okButton" class="ok-button">OK</div>
</div>
</div>
请注意,在此示例标记中,通知标题和说明是静态字符串。 如果您要为用户显示一条消息,此解决方案就可以正常工作。
当然我们的数据绑定功能提供了更大的灵活性——您可以创建一个模板并将不同的数据对象传递给它。 因此,您可以为多个通知消息重用一个模板。
如果您更喜欢此选项,请使用 ${Data_property_name} 占位符,如下所示:
<div class="text">${Caption}</div>
<div class="text">${Text}</div>
“Caption”和“Text”是标准占位符,可以通过 AlertControl.Show 重载直接替换:
alertControl1.Show(this, "Sample caption", "Sample notification text");
您可以添加模板设计所需的任意数量的占位符,但请记住处理 AlertControl.BeforeFormShow 事件并将数据对象传递给 e.HtmlPopup.DataContext 属性。 例如,下面的代码使用 div 元素来显示由五个占位符组合而成的字符串:两个用于字符串值(FullName、Ticker),两个用于数字(Percentage、Price),一个用于自定义 Direction 枚举值。
<div class="message-text">
${FullName} ({Ticker}) {Direction} {Percentage}%. The current price is ${Price}.
</div>
通知图像也在运行时检索,img 标签使用占位符替代静态 src 属性值。
<img src="${StockImage}" class="message-image" />
此示例应用程序使用 StockInfo 类对象作为数据项。
public class StockInfo {
public StockInfo(string ticker, string fullName, Direction direction,
double percentage, double price, SvgImage img) {
Ticker=ticker;
FullName=fullName;
Direction=direction;
Percentage=percentage;
Price=price;
StockImage=img;
}
public string Ticker { get; set; }
public string FullName { get; set; }
public Direction Direction { get; set; }
public double Percentage { get; set; }
public double Price { get; set; }
public SvgImage StockImage { get; set; }
}
public enum Direction {
[Description("rises")]
Up,
[Description("falls")]
Down
}
当数据项的 "Price" 值在短时间内发生显着变化时会触发通知,相应的项目分配给 AlertControl.BeforeFormShow 事件处理程序中的 e.HtmlPopup.DataContext 属性。
void AlertControl1_BeforeFormShow(object sender, AlertFormEventArgs e) {
// TODO: Retrieve a data item
e.HtmlPopup.DataContext=myStockInfoInstance;
}
因此,通知会从指定为 DataContext 的数据项中检索其 ${Field_Name} 占位符的数据。 请注意,边条的颜色会根据 "Direction" 枚举值而变化。
DevExpress WinForm
DevExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
*请认真填写需求信息,我们会在24小时内与您取得联系。