激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

在低成本工控主板上開發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
主站蜘蛛池模板: 美女免费毛片| 免费在线色视频| 理论亚洲区美一区二区三区| 国内精品自在欧美一区| 亚洲国产成人私人影院| 99香蕉视频| 日本a一级片| 亚洲免费网| 成年网址网站在线观看| 欧美亚洲黄色片| 国产成人性色视频| 美女美女高清毛片视频| 91久久线看在观草草青青| 国产欧美二区三区| 蝌蚪91视频| 欧美综合国产| 亚a在线| 永久网站色视频在线观看免费| 快猫最新地址| 国产111111在线观看| 国产精品国产三级国产专不∫| 韩日毛片| 91久久精品国产免费一区| 国产精品人人爱一区二区白浆| 久久久亚洲精品蜜桃臀| 欧美亚洲国产色综合| 五月天丁香花婷婷视频网| 亚洲色图100p| 伊人久久成人成综合网222| 97精品国产福利一区二区三区| 九九精品热线免费观看6| 久久精品成人欧美大片免费| 日本第一次处毛片| 中国黄色录像| 可以直接看的黄色网址| 亚洲综合久久久| 在线免费黄| 成 人免费va视频| 在线精品欧美日韩| 在线观看黄色| 亚洲视频在线免费|