0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术在低成本工控主板上开发Java图形应用程序

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-06 11:17 次阅读

随着互联网技术的快速发展,Java语言以其简单可靠,安全性高,可移植性强等特点得到极大普及,长期占据编程语言排行榜第一的位置,特别是在嵌入式领域得到了越来越多的应用。为了满足客户在嵌入式主板上运行Java程序的需求,英创公司在ESM335x、ESM6800等主流产品型号中移植了针对嵌入式Linux的JRE(Java Runtime Environment),以支持常规的Java通讯、控制类程序的运行。JRE的运行需要占用的内存超过100MB,英创公司的低成本嵌入式主板ESM6800H和ESM6800V即可满足Java虚拟机对硬件环境的要求。进一步,ESM6800H和ESM6800V这二款型号的主板还可以支持X11图形系统。在X11图形系统的环境中,就可以直接通过Java的图形用户接口实现图形界面的开发,其开发过程类似于WinCE+C#,这样就弥补了ESM6800没有WinCE系统,从而不能使用C#开发界面的遗憾。

Java的图形用户接口可以让用户构建一个通用的界面,使其在所有平台上都能正常显示,Java构建界面要使用抽象窗口工具包AWT(Abstract Window Toolkit)和Swing。Swing可以看作是AWT的改良版,而不是代替AWT,是对AWT的提高和扩展。所以,在实现界面的程序中,Swing和AWT都要用到,它们共存于Java基础类(Java Foundation Class,JFC)中。用户通过英创公司提供的eclipse软件就能够完成图形界面程序的开发。环境搭建的详细方法可以参考文章:《英创主板JAVA应用开发简介》。本文主要简要介绍何如使用Java实现图形界面。

Java的图形接口组件按其作用可分为基本组件(Component)和容器(Container)两大类:基本组件,不能容纳其他组件,如按钮、文本框等图形界面元素。容器可以用来容纳其他的组件,如窗口、对话框等,下面是常用组件的列表。

组件名称 组件简介
JTextField 单行文本框,为用户处理输入信息
JTextArea 多行文本框,为用户处理输入信息
JButton 按钮类,为用户提供具有文本和图标的按钮
JLabel 标签,为用户提供包含说明性文本和图标
JCheckBox 复选框,为用户提供多项选择
JRadioButton 单选按钮,为用户提供单项选择
JComboBox 组合框,为用户提供下拉菜单
JPasswordField 密码框,允许输入单行密码,密码框默认回显字符是“*”

图形窗口一般是上述各个组件的承载体,处于非常重要的位置,在JAVA中常用的窗体包括JFrame和JDialog这两种形式。

窗体名称 简介
JFrame 框架窗口,它支持窗口周边的框架、标题栏,以及最小化、最大化和关闭按钮
JDialog 对话框基类,为用户提供构造并管理通用对话框

我们以串口通讯为例,通过Java实现一个简单的串口测试界面。

窗口是图形界面的基础,所有用户设计的可视组件都是放在窗口中的,所以首先我们需要构建一个窗口,下面我们就使用框架窗口(JFrame)来构建一个窗口对象:

public class MainGui extends JFrame {

public MainGui() {

setSize(800, 480);

setTitle("串口测试程序");

setLocationRelativeTo(null);

setDefaultCloseOperation(MainGui.EXIT_ON_CLOSE);

setVisible(true);

}

}

我们给窗口取名为“串口测试程序”,接下来我们在串口上增加提供打开串口操作、关闭串口操作和发送数据的按钮,按钮(JButton)在界面中用于触发动作事件,按钮上可以显示文本,当按钮动作时,能触发动作事件,按钮动作事件的相关接口类是ActionListener, 构建按钮的部分代码如下:

class RightPanel extends JPanel {

public RightPanel() {

this.setLayout(new GridLayout(13, 1, 0, 5));

JButton button_open = new JButton("打开串口");

JButton button_write = new JButton("发送");

JButton button_close = new JButton("关闭串口");

button_open.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

mes = tty + ":" + baud + "-8-1-0";

exitflag = true;

if(Serial_Port.openport(mes.toString()) == -1)

JOptionPane.showMessageDialog(null,"open fail!","消息框",JOptionPane.YES_OPTION);

button_open.setEnabled(false);

button_write.setEnabled(true);

button_close.setEnabled(true);

}

});

button_write.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

String strs = textPane.getText();

String send_buf = ToolsFunc.formatHexString(strs);

System.out.print(send_buf.length());

if(send_buf.length() > 1)

{

System.out.println(send_buf);

Serial_Port.writeport(strs);

}

}

});

button_close.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

Serial_Port.closeport();

button_open.setEnabled(true);

button_write.setEnabled(false);

button_close.setEnabled(false);

}

});

add(button_open);

add(button_write);

add(button_close);

button_open.setEnabled(true);

button_write.setEnabled(false);

button_close.setEnabled(false);

}

}

接下来我们为串口的接受和发送的数据添加两个显示区域,可以选择文本框(JTextField)和文本区(JTextArea)来实现,文本框与文本区的主要区别是文本区可存放多行文本。在这里我们选用文本区来实现,并用GridBagLayout进行两个文本区的布局管理,构建文本区的部分代码如下:

class CenterPanel extends JPanel {

public CenterPanel() {

GridBagLayout layout = new GridBagLayout();

GridBagConstraints s= new GridBagConstraints();

this.setLayout(layout);

textField = new JTextArea(20, 50);

textField.setTabSize(4);

textField.setLineWrap(true);

textField.setEditable(false);

JScrollPane jscrollPane = new JScrollPane(textField);

textPane = new JTextArea(1, 50);

textPane.setCursor(new Cursor(Cursor.TEXT_CURSOR));

JScrollPane jscrollPane_1 = new JScrollPane(textPane);

textPane.setLineWrap(true);

this.add(jscrollPane);

this.add(jscrollPane_1);

s.gridwidth=0;

s.weightx = 0.5;

s.ipady = 320;

s.ipadx = 640;

s.weighty=0.8;

layout.setConstraints(jscrollPane, s);

s.gridwidth=0;

s.weightx = 0.5;

s.ipady = 10;

s.weighty=0.1;

layout.setConstraints(jscrollPane_1, s);

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11123

    浏览量

    207900
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6081

    浏览量

    34940
收藏 人收藏

    评论

    相关推荐

    TM4C MCU用FreeRTOS开发通用应用程序应用说明

    电子发烧友网站提供《TM4C MCU用FreeRTOS开发通用应用程序应用说明.pdf》资料免费下载
    发表于 09-11 14:15 0次下载
    <b class='flag-5'>在</b>TM4C MCU<b class='flag-5'>上</b>用FreeRTOS<b class='flag-5'>开发</b>通用<b class='flag-5'>应用程序</b>应用说明

    工控主板接口全解析:国产主板的多样连接

    接口以其丰富的类型和卓越的性能,满足了工业领域多样化的应用需求。 1.PCIe接口   作为工控主板的高速外设连接通道,PCIe接口以其卓越的数据传输速率,支持着广泛的扩展卡,包括但不限于网络适配器、
    的头像 发表于 09-06 14:54 223次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>接口全解析:国产<b class='flag-5'>主板</b>的多样连接

    工控主板环保智能设备中的应用

    工控主板环保智能设备中的应用,对于环境监测、资源管理、污染控制等方面起到了至关重要的作用。以下是工控主板
    的头像 发表于 07-17 15:54 211次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b><b class='flag-5'>在</b>环保智能设备中的应用

    华纳云:java web和java有什么区别java web和java有什么区别

    Java Web和Java是两个不同的概念,它们功能、用途和实现方式存在一些区别,下面将详细介绍它们之间的区别。 1. 功能和用途: – Jav
    的头像 发表于 07-16 13:35 329次阅读
    华纳云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么区别<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么区别

    使用工控主板时该注意哪些事项?

    最近大家都在频繁问一个问题就是工控主板什么人为情况下容易出现故障,从而造成工控主板的损坏,那今天小编就来讲讲,我们
    的头像 发表于 06-05 16:01 255次阅读
    使用<b class='flag-5'>工控</b><b class='flag-5'>主板</b>时该注意哪些事项?

    工控主板容易出现故障的原因有哪些?

    最近大家都在频繁问一个问题就是工控主板什么人为情况下容易出现故障,从而造成工控主板的损坏,那今天小编就来讲讲,我们
    的头像 发表于 05-17 10:57 211次阅读

    工控主板的性能指标有哪些?

    工控主板是工业控制领域中的关键组成部分,它承载着工控系统的核心功能。因此,工控主板的性能指标是评估其质量和性能的重要标准。本文将介绍
    的头像 发表于 05-10 16:27 722次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的性能指标有哪些?

    工控主板和普通主板的区别有哪些

    工控主板和普通主板是两种计算机硬件领域中常见的主板类型,它们设计、功能和用途上有着明显的区别
    的头像 发表于 04-25 16:54 785次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>和普通<b class='flag-5'>主板</b>的区别有哪些

    购买工控主板的三大误区

    最近有很多人问我什么样的工控主板算好的,有没有一个统一的标准。工控主板作为整机的核心组成部分,性能稳定上有着至关重要的作用,那今天小编就来
    的头像 发表于 04-16 16:40 225次阅读

    RX78M组 EtherCAT ETG.5003示例程序固件信息技术

    电子发烧友网站提供《RX78M组 EtherCAT ETG.5003示例程序固件信息技术.pdf》资料免费下载
    发表于 02-21 14:22 1次下载
    RX78M组  EtherCAT ETG.5003示例<b class='flag-5'>程序</b>固件<b class='flag-5'>信息技术</b>

    开发java应用程序的基本步骤是

    ava是一种面向对象的编程语言,广泛用于开发各种类型的应用程序开发Java应用程序时,有一些
    的头像 发表于 11-28 16:52 1311次阅读

    开发java程序的一般步骤是

    开发Java程序的一般步骤通常包括需求分析、设计、编码、测试和部署等阶段。下面将详细介绍Java程序开发
    的头像 发表于 11-28 16:43 1339次阅读

    javaweb和java有什么区别

    对象、一次编写多处运行等特点。Java语言可以用于开发各种类型的应用程序,包括桌面应用、移动应用和Web应用等。 Javaweb则是基于Java技术
    的头像 发表于 11-16 10:49 2980次阅读

    java和javaweb和javascript的区别

    Microsystems于1995年发布。它被设计成一种跨平台编程语言,可以不同的操作系统编写一次,然后在其他操作系统运行。Java使用Ja
    的头像 发表于 11-16 10:48 12.5w次阅读

    信息技术是干什么?

    广播电子技术信息技术
    橙群微电子
    发布于 :2023年09月22日 09:17:48