<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • 在低成本工控主板上開發Java圖形應用程序

     2017-12-5     作者:黃志超         
    文章標簽:Java

      隨著互聯網技術的快速發展,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);

                  }

    }


      通過Java實現的界面如下圖:


    在低成本工控主板上開發Java圖形應用程序.gif


      本篇文章只對界面的實現進行了簡單的介紹,關于對于串口的操作,英創公司將提供訪問硬件所需的名為libemtronixhardware.so的動態庫和相關接口Java類源文件給客戶。libemtronixhardware.so完全符合JNI規范,用戶加載之后,即可通過英創公司提供的java類,訪問硬件接口。


      如果需要完整代碼,可與英創公司的工程師聯系索取。

    文章標簽:Java
    久9热免费精品视频在线观看| 亚洲视频精品在线| 一夲道无码人妻精品一区二区| 久久久免费的精品| 亚洲A∨精品一区二区三区下载| 国内精品久久人妻无码不卡| 三上悠亚精品二区在线观看| 99re5在线精品视频热线| 精品伊人久久大香线蕉网站| 国产亚州精品女人久久久久久| 国语自产精品视频在线看| 亚洲精品乱码久久久久久自慰| 精品无码久久久久国产动漫3d| 国产日韩精品一区二区三区| 久久精品国产一区| 孩交精品xxxx视频视频| 2021国产精品自产拍在线观看| 国产精品区一区二区三| 日本午夜精品一区二区三区电影| 精品无码三级在线观看视频| 国产99精品久久| 在线精品动漫一区二区无广告| 中文字幕无码精品亚洲资源网久久| 亚洲?V无码成人精品区日韩| 无码人妻精品一区二区三区66| 野狼第一精品社区| 99久久免费国产精品热| 亚洲A∨精品一区二区三区| 国产精品成人无码免费| 国内揄拍国内精品视频| 国产精品久久久久a影院| 久久精品无码一区二区WWW| 97国产精品视频观看一| 久久久久亚洲精品天堂久久久久久| 国内精品久久久久影院亚洲| 国内精品免费视频精选在线观看| 国产精品美女乱子伦高| 精品久久久无码人妻中文字幕豆芽 | 亚洲国产成人乱码精品女人久久久不卡| 亚洲AV无码精品无码麻豆| 国产91精品一区|