麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

JDK1.3 中的本地繪制支持

2019-11-18 14:04:47
字體:
來源:轉載
供稿:網友

  在 JDK1.3 出現以前,您僅能將 java 本地接口用于非用戶界面的工作。JDK 1.3 引入了新的 Java 2 AWT 本地接口,這使您可以在 Java 程序中使用非 Java 的 GUI 組件,盡管這樣做會失去純 Java 解決方案的可移植性。在使用 J2AWT 時,您必須針對要使用它的每個平臺制作本地動態連接庫或共享庫。

下面這段話摘自 JDK1.3 的某個頭文件,它說明了這種新的 API 的開發背景及原因:

AWT 支持使用本地 C 或 C++ 應用程序訪問 AWT 的本地結構。這是為了便于將原有的 C 或 C++ 應用程序移植到 Java 并滿足需要 ... [這些應用程序] 出于性能方面的原因在畫布上自行進行本地繪制

在 JDK1.3 以前,Java 編程沒有明確的方法來訪問基層的同等 GUI 組件的句柄。在 JDK 1.3 中, Sun 公司創建了一種標準機制,通過這種機制,開發人員可以使本地 GUI 應用程序和庫在 Java AWT Canvas 對象中進行繪制。這意味著現在有一種正式的、有保證的方法來獲得支持這一功能的信息。當 JDK 1.3 與其他操作平臺對接時,所有的接口都提供相同的信息 -- 而不管使用的是什么系統。JDK 1.3 的 Windows 版本和 Solaris 版本是首先提供這種支持的實現。

Sun 公司引入這一功能組件有幾方面的原因。首先, JDK 1.3 使得人們可以將依靠第三方產品的復雜原有軟件移植到 Java 上,而不必等到第三方產品本身完成移植以后。第二個原因即性能;假如本地的 GUI 代碼經過人們長時期的努力得到優化,則原樣保留這些軟件具有重要的商業價值。

在本文中,我將介紹一些該功能部件的基本概念。我將逐步開發一個窗口小部件樣例,該窗口小部件使用Win32 API 進行繪制。下圖是最終的窗口小部件的快照,一個帶有笑臉的圓形窗口。

分步概覽
第一步,定義一個 Java 類 -- 比如說,Mywindow -- 使其繼續 Canvas 類并重載 paint 方法。您使用 paint 方法執行 AWT 對象的繪制操作,并在覆蓋該方法時加上 native 要害字。覆蓋方法使您能夠使用自己的本地代碼。您必須構建自己的本地代碼并把它編譯成一個動態連接庫,就像我們處理其他的 Java 本地接口應用程序一樣,在本例中,我們將調用 MyWindow.DLL 庫。在 Solaris 和 linux 上則為共享對象或共享庫。您還需要用 System.loadLibrary("MyWindow") 調用將 MyWindow.DLL 庫加載到您的名為 MyWindow 的 Java 類中。

完成這一示例需要二個部分:其一是 MyWindow.Java ,它提供 Canvas 類的子類,其二是 MyWindow.CPP ,它包含基于 Java 本地接口的繪制子程序的入口點。 在參考資源部分可找到 MyWindow.JavaMyWindow.CPP 及自動執行編譯的批處理文件 BUILD.BAT。

第一步: 創建 MyWindow Java 類
J2AWT 用于這種方法時有一個主要的局限性:本地代碼只能對 java.awt.Canvas 類的子類進行操作。這正是 MyWindow 繼續 Canvas 類的原因。在 Java 應用程序中,您可以像使用 Canvas 的其它子類那樣使用 MyWindow;在本例中,我將 MyWindow 添加到 Jwindow 中。

import java.awt.*;
import javax.swing.*;

public class MyWindow extends Canvas {
        static {
                //加載包含 paint 代碼的庫。
                System.loadLibrary("MyWindow");
        }

        //繪制操作的本地入口點
        public native void paint(Graphics g);

        public static void main( String[] argv ){
                Frame f = new Frame();
                f.setSize(300,400);

                JWindow w = new JWindow(f);
                w.setBackground(new Color(0,0,0,255));
                w.getContentPane().setBackground(new Color(0,0,0,255));
                w.getContentPane().add(new MyWindow());
                w.setBounds(300,300,300,300);
                w.setVisible(true);
        }
}



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91在线视频观看 | 手机免费看一级片 | 国产精品成人一区二区三区电影毛片 | 久久久久性 | 日韩精品中文字幕在线播放 | 免费毛片免费看 | 羞羞的视频免费在线观看 | 国产亚洲精品成人 | 国产精品久久久久久久av三级 | 国产亚洲精品久久久久久久 | 免费网址黄 | 伊人网站 | 免费看综艺策驰影院 | 国产一级毛片av | 中文字幕精品一二三四五六七八 | 夜夜看| 爽爽淫人网 | 精品久久久久久久久久久久 | 色啪综合 | 国产精品久久久网站 | 精品二区在线观看 | 中文字幕网站在线 | 国产精品一区自拍 | 日韩欧美电影一区二区三区 | 久久千人斩 | 欧美综合在线观看 | 午夜免费网 | 成人黄色小视频在线观看 | 久久伊人国产精品 | 久久精品23 | 国内精品伊人久久 | 特黄一级小说 | 国产在线看一区 | 一级黄色免费大片 | 97青青| 羞羞视频免费网站含羞草 | 日本xxxx视频 | 激情久久一区二区 | 一级黄色免费大片 | 国产va在线观看 | av之家在线观看 |