精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JDK1.3中使用非Java的GUI組件

開發 后端
本文介紹JDK1.3中推出的一個新的本地接口,通過這個接口可以Java程序中使用非 Java 的 GUI 組件。

如果您正在使用 JDK1.3,則您可以借助于 Java 2 AWT 本地接口,使用 C 或 C++ 方法來繪制基于 AWT 的 Canvas 對象。 

因此,本地 GUI 組件可以嵌入到 Java 應用程序中;同時,正像 JDK1.3 以前的其他版本一樣,您可以使用 Java 本地接口從 Java 應用程序中調用本地方法。Davanum Srinivas 解釋了如何在 Java 中使用現有的本地用戶界面庫。他還提供了 Win32 操作系統下的一個具體示例。

在 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.Java、MyWindow.CPP 及自動執行編譯的批處理文件 BUILD.BAT。

第一步: 創建 MyWindow Java 類

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

  1. import java.awt.*;  
  2. import javax.swing.*;  
  3.  
  4. public class MyWindow extends Canvas {  
  5. static {  
  6. //加載包含 paint 代碼的庫。  
  7. System.loadLibrary("MyWindow");  
  8. }  
  9.  
  10. //繪制操作的本地入口點  
  11. public native void paint(Graphics g);  
  12.  
  13. public static void main( String[] argv ){  
  14. Frame f = new Frame();  
  15. f.setSize(300,400);  
  16.  
  17. JWindow w = new JWindow(f);  
  18. w.setBackground(new Color(0,0,0,255));  
  19. w.getContentPane().setBackground(new Color(0,0,0,255));  
  20. w.getContentPane().add(new MyWindow());  
  21. w.setBounds(300,300,300,300);  
  22. w.setVisible(true);  
  23. }  
  24. }  

請注意:您是在靜態塊中加載 MyWindow.DLL。這正是 Java 應用程序訪問本地代碼的方式。(我稍候就會開發這段本地代碼。)同時還應注意:paint 方法是用 native 關鍵字聲明的,并且沒有提供任何實現;這樣做是為了讓虛擬機知道,應該從在靜態塊中加載的動態連接庫中調用該本地方法。

第二步:生成該類的 JNI 頭文件

要為以上定義的類生成 Java 本地接口頭文件,需使用 javah MyWindow.class 命令。首先應確保這個類文件在您的 CLASSPATH 中。以下是所生成的 MyWindow.h 的一部分,給出了函數聲明。

  1. /*  
  2. * Class: MyWindow  
  3. * Method: paint  
  4. * Signature: (Ljava/awt/Graphics;)V  
  5. */ 
  6. JNIEXPORT void JNICALL Java_MyWindow_paint  
  7. (JNIEnv *, jobject, jobject);  
  8.  

第三步:開發完整的 MyWindow.CPP

以下是完整的 MyWindow.CPP,其中包含 MyWindow.Java 中所需要的繪圖程序的本地代碼。

  1. #include < windows.h>  
  2. #include < assert.h>  
  3. #include "jawt_md.h" 
  4. #include "MyWindow.h" 
  5.  
  6. #define X(x) (int)(xLeft + (x)*xScale/100// 縮放宏  
  7. #define Y(y) (int)(yTop + (y)*yScale/100// 以使尺度在 0-100 之間  
  8. #define CX(x) (int)((x)*xScale/100)  
  9. #define CY(y) (int)((y)*yScale/100)  
  10.  
  11. void DrawSmiley(HWND hWnd, HDC hdc);  
  12. HRGN hrgn = NULL;  
  13.  
  14. JNIEXPORT void JNICALL  
  15. Java_MyWindow_paint(JNIEnv* env, jobject canvas, jobject graphics)  
  16. {  
  17. JAWT awt;  
  18. JAWT_DrawingSurface* ds;  
  19. JAWT_DrawingSurfaceInfo* dsi;  
  20. JAWT_Win32DrawingSurfaceInfo* dsi_win;  
  21. jboolean result;  
  22. jint lock;  
  23.  
  24. // 獲取 AWT   
  25. awt.version = JAWT_VERSION_1_3;  
  26. result = JAWT_GetAWT(env, &awt);  
  27. assert(result != JNI_FALSE);  
  28. // 獲取繪圖界面  
  29. ds = awt.GetDrawingSurface(env, canvas);  
  30. if(ds == NULL)  
  31. return;  
  32. // 鎖定繪圖表面  
  33. lock = ds->Lock(ds);  
  34. assert((lock & JAWT_LOCK_ERROR) == 0);  
  35.  
  36. // 獲取繪圖表面的信息  
  37. dsi = ds->GetDrawingSurfaceInfo(ds);  
  38.  
  39. // 獲取特定平臺的繪圖信息  
  40. dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;  
  41.  
  42. HDC hdc = dsi_win->hdc;  
  43. HWND hWnd = dsi_win->hwnd;  
  44. //////////////////////////////  
  45. // !!! 在此處進行繪圖 !!! //  
  46. //////////////////////////////  
  47. if(hrgn == NULL)  
  48. {  
  49. RECT rcBounds;  
  50. GetWindowRect(hWnd,&rcBounds);  
  51. long xLeft = 0// 用于縮放宏  
  52. long yTop = 0;  
  53. long xScale = rcBounds.right-rcBounds.left;  
  54. long yScale = rcBounds.bottom-rcBounds.top;  
  55. hrgn = CreateEllipticRgn(X(10), Y(15), X(90), Y(95));  
  56. SetWindowRgn(GetParent(hWnd),hrgn,TRUE);  
  57. InvalidateRect(hWnd,NULL,TRUE);  
  58. else {  
  59. DrawSmiley(hWnd,hdc);  
  60. }  
  61. // 釋放繪圖表面的信息  
  62. ds->FreeDrawingSurfaceInfo(dsi);  
  63. // 為繪圖表面解鎖  
  64. ds->Unlock(ds);  
  65. // 釋放繪圖表面  
  66. awt.FreeDrawingSurface(ds);  
  67. }  
  68.  
  69. void DrawSmiley(HWND hWnd, HDC hdc)  
  70. {  
  71. RECT rcBounds;  
  72. GetWindowRect(hWnd,&rcBounds);  
  73. long xLeft = 0// 用于縮放宏  
  74. long yTop = 0;  
  75. long xScale = rcBounds.right-rcBounds.left;  
  76. long yScale = rcBounds.bottom-rcBounds.top;  
  77.  
  78. // 基于控制大小的畫筆寬度  
  79. int iPenWidth = max(CX(5), CY(5));  
  80. HBRUSH brushBlack;  
  81. HBRUSH brushYellow;  
  82. HPEN penBlack = CreatePen(PS_SOLID, iPenWidth, RGB(0x00,0x00,0x00));  
  83. // 用于繪制填充橢圓的空畫筆  
  84. HPEN penNull = CreatePen(PS_NULL, 0, (COLORREF)0);  
  85.  
  86. brushBlack = CreateSolidBrush(RGB(0x00,0x00,0x00));  
  87. brushYellow = CreateSolidBrush(RGB(0xff,0xff,0x00));  
  88.  
  89. HPEN pPenSave = (HPEN)SelectObject(hdc, penBlack);  
  90. HBRUSH pBrushSave = (HBRUSH)SelectObject(hdc,brushYellow);  
  91. Ellipse(hdc,X(10), Y(15), X(90), Y(95)); // 頭部  
  92.  
  93. Arc(hdc,X(25), Y(10), X(75), Y(80), // 嘴部(微笑)  
  94. X(35), Y(70), X(65), Y(70));  
  95.  
  96. SelectObject(hdc,&penNull); // 無繪圖寬度  
  97. SelectObject(hdc,&brushBlack);  
  98.  
  99. Ellipse(hdc,X(57), Y(35), X(65), Y(50));  
  100. Ellipse(hdc,X(35), Y(35), X(43), Y(50)); // 右眼  
  101. Ellipse(hdc,X(46), Y(50), X(54), Y(65)); // 鼻子  
  102.  
  103. SetBkMode(hdc,TRANSPARENT); // 使用前景顏色  
  104.  
  105. SelectObject(hdc,pBrushSave);  
  106. SelectObject(hdc,pPenSave);  
  107. }  

這里的關鍵數據結構是 JAWT,它是在 jawt.h 中定義的(通過 jawt_md.h 包含在內)。它使程序可以訪問本地代碼在基于 Java 的 GUI 組件上繪圖所需的所有信息。本地方法的第一部分是套式:置入 JAWT 結構,獲得一個 JAWT_Win32DrawingSurfaceInfo 結構,鎖定表面(請一次只使用一種繪圖工具?。?然后,獲取一個 JAWT_DrawingSurfaceInfo 結構,該結構包含特定平臺下繪圖所必需的指針(在 platformInfo字段中)。它也包含繪圖界面的矩形界限框及當前剪切區域。有關詳細信息,請查看 jawt.h 和 jawt_md.h (請參閱下面標題為 “構建環境”的部分)。

Java_MyWindow_paint 是一個入口點,JVM 通過調用它來繪制 MyWindow。輔助函數 DrawSmiley 使用 Win32 調用來完成實際的繪制工作。要在您的應用程序中包含 GetDrawingSurfaceInfo,請使用外部庫 jawt.lib(請參閱 “構建環境”)。

第四步:編輯 BUILD.BAT

在運行 BUILD.BAT 之前首先對它進行編輯,并像如下所示的那樣,為您的 Visual C++ 及 JDK1.3 設置路徑。BUILD.BAT 對 MyWindow.java 進行編譯,生成 MyWindow.h,然后將 MyWindow.CPP 編譯為 MyWindow.DLL。

SET DEVSTUDIO=D:Program FilesMicrosoft Visual StudioVC98

SET JDK13=D:JDK1.3

好了,一切準備就緒。在運行該樣例之前,請確保 MyWindow.DLL、JDK1.3BIN 及 JDK1.3JREBIN 都在 PATH 內,還要保證當前目錄在 CLASSPATH 中;這將確保 MyWindow.class 會被成功加載。在確信 PATH 和 CLASSPATH 都設置妥當后,在命令行輸入 java MyWindow 來運行此應用程序。為方便您的使用,window.zip 中包含了一個批處理文件 RUN.BAT(請參閱參考資源)。要為 JDK 1.3 設置PATH 和 CLASSPATH,請編輯 RUN.BAT。

構建環境

頭文件:在 JDK 的 include 目錄中新增了專用于 Windows 的 C 頭文件。它們是:

include/jawt.h.

include/win32/jawt_md.h.

依據 JavaSoft 網站的說明,這些頭文件并不是 Java 2 平臺正式規范的組成部分;提供這些頭文件只是為希望用一種標準化方法訪問本地繪圖功能的開發人員提供一種便利。我認為這表示將 JDK 移植到其它平臺的廠商可以不提供這個 API。

庫:一個以 jawt.lib 命名的新庫已添加到 SDK 的庫目錄中。如前所述,這個庫包含一個用于把 J2AWT 包含到您的應用程序中所需要的入口點。例如,要鏈接到 GetDrawingSurfaceInfo 入口點,您需要在您的程序中包含 jawt.lib。

工具:javah 工具用來為 Java 類的本地函數生成 C/C++ 頭文件,javac 工具用來編譯 Java 源文件。

小結

將原有軟件系統移植到 Java 中并不容易,尤其是當原有軟件包含高性能的繪圖器時。Java 2 AWT 本地接口使得分階段移植變得較為容易,它允許您首先移植對性能要求不高的代碼,然后再移植關鍵的繪制代碼。它同時使第三方窗口小部件開發廠商更能嚴肅地看待針對 Java 產品的開發。有了 JDK1.3中的本地應用程序接口,您就可以移植原有的 GUI 代碼,并更快地完成開發,這樣就不會犧牲您為提高本地代碼關鍵部分的性能而作的投資。

【編輯推薦】

  1. JDK5.0中一些collection類的使用詳解
  2. JDK的概念、組成及JDK常用包
  3. JDK1.4在Windows下的環境配置
  4. JDK1.6在LINUX下的安裝配置
  5. JDK日志框架之實例結合STAF淺析
責任編輯:yangsai 來源: IBMDW
相關推薦

2009-03-20 13:40:15

JDK線程并發

2021-08-01 07:58:58

Vue 加載組件

2009-04-12 08:46:43

Symbian諾基亞移動OS

2017-07-04 19:02:17

ReacRedux 項目

2021-03-08 15:33:50

Java框架開發

2009-07-30 14:14:07

非托管COM組件

2009-07-08 15:31:40

JDK 6.0web service

2022-12-21 16:53:59

LinuxConverterGUI

2010-07-30 08:30:38

VisualVMVisualVM 1.VisualVM 1.

2021-07-09 08:33:35

React組件受控

2020-05-11 15:01:16

JavaJKD 15工具

2012-08-10 13:55:56

Java動態代理

2024-02-05 13:07:00

.NETTable組件

2012-07-12 10:22:58

Ubuntu系統菜單

2009-07-30 12:19:32

ASP.NET中使用A

2011-06-09 16:18:25

Qt GUI

2024-11-25 07:00:00

箭頭函數JavaScriptReact

2023-10-10 22:24:16

2010-05-20 13:49:34

MySQL GUI工具

2021-03-22 08:45:30

異步編程Java
點贊
收藏

51CTO技術棧公眾號

国内精品国产成人国产三级粉色 | 高清电影在线观看免费| 国产一区二区三区国产| 97免费在线视频| 变态另类ts人妖一区二区| 欧美激情福利| 亚洲mv在线观看| 一区二区av| 婷婷五月综合激情| 激情欧美一区二区三区在线观看| 久久久久久一区二区三区 | 日韩成人免费视频| 亚洲一级片网站| av资源一区| 国产精品天天看| 国产九色91| 91久久精品无码一区二区| 亚洲国产精品一区制服丝袜| 深夜福利国产精品| 国产精品伦子伦| 久久综合偷偷噜噜噜色| 在线观看91视频| 欧美精品自拍视频| caopen在线视频| 国产日韩欧美一区二区三区综合| 国产一区免费在线| 国产sm主人调教女m视频| 日本午夜精品一区二区三区电影| 久久久久久12| 色老板免费视频| 成人羞羞动漫| 国产亚洲欧美另类中文| 视频免费在线观看| 伊人精品综合| 欧美一区二区视频在线观看2022 | 日本成人免费在线观看| 国产后进白嫩翘臀在线观看视频| 国产精品毛片a∨一区二区三区| 精品久久久久久中文字幕动漫| aaa国产视频| 久久99国产精品免费| 国产精品电影网站| av黄色在线播放| 在线一区视频| 欧美亚洲成人xxx| 欧美三级一区二区三区| 亚洲国产午夜| 韩国v欧美v日本v亚洲| 九九九久久久久| 好吊日精品视频| 九九久久国产精品| 国产一级免费观看| 欧美欧美全黄| 久久久久久网址| 日韩黄色三级视频| 99在线热播精品免费99热| 成人在线国产| 欧美日韩一区久久| 麻豆一区二区三区视频| 在线成人视屏 | 粉嫩虎白女毛片人体| 成人av观看| 欧美综合亚洲图片综合区| 久久久久久久久久福利| 日韩制服一区| 欧美老年两性高潮| 波多野结衣三级视频| 成人18夜夜网深夜福利网| 337p日本欧洲亚洲大胆精品| 亚洲av无码一区二区三区网址| 色婷婷久久久| 在线观看日韩欧美| 美女视频久久久| 欧美日韩视频| 91成人在线播放| 欧美日韩在线视频播放| 蜜桃在线一区二区三区| 久久综合久久综合久久| 2019中文字幕在线观看| 亚洲s码欧洲m码国产av| 免费在线观看一区二区三区| 国产欧美精品一区二区| 国内老熟妇对白xxxxhd| 波多野结衣中文字幕一区| 欧美二区三区在线| 免费大片在线观看www| 亚洲美女屁股眼交3| 可以在线看的av网站| 日本综合久久| 欧美变态凌虐bdsm| 亚洲精品国产91| 欧美啪啪一区| 国产精品久久久久久搜索| 国产av精国产传媒| 91日韩在线专区| 黄瓜视频免费观看在线观看www| 黄网在线免费看| 色网综合在线观看| 中文字幕在线观看视频www| 中文字幕日韩三级片| 精品综合久久88少妇激情| 国产一区二区三区在线视频| 欧美日韩在线观看免费| 丝袜亚洲另类欧美综合| 亚洲自拍偷拍区| 精品一二三区视频| 一个色妞综合视频在线观看| 人人干人人视频| 爱爱精品视频| 久久视频在线播放| 丰满少妇xoxoxo视频| 国产成人精品一区二区三区四区 | 992kp免费看片| 欧美女王vk| 国语自产精品视频在线看一大j8 | 99热在这里有精品免费| 一区二区三区在线视频111| 碰碰在线视频| 蜜臀av在线播放一区二区三区| 欧美一区二区三区日韩视频| 亚洲第一黄色网址| 影音先锋日韩在线| 国产精品夜色7777狼人| 天堂v视频永久在线播放| 综合久久一区二区三区| 色一情一乱一伦一区二区三区日本| 成人av动漫| 九九热在线精品视频| 一二三四区在线| 久久精品一区四区| 男人操女人逼免费视频| 1769国产精品视频| 久久69精品久久久久久久电影好| 最新国产中文字幕| 国产欧美精品一区aⅴ影院| 欧美黑人经典片免费观看| 日本免费一区二区三区视频| 日韩色av导航| 国产麻豆精品一区| 国产精品激情偷乱一区二区∴| 日韩视频第二页| 免费精品一区二区| 成人另类视频| 精品少妇一区二区30p| 国产一区二区在线播放视频| 国产女人aaa级久久久级| 苍井空浴缸大战猛男120分钟| 国产女人18毛片水真多18精品| 欧美日韩成人精品| 亚洲成人av综合| 亚洲第一久久影院| 性久久久久久久久久久| 在线亚洲精品| 欧美二区三区在线| 91tv亚洲精品香蕉国产一区| 亚洲最新av在线网站| 在线免费一区二区| 欧美激情一区二区在线| 一级黄色录像在线观看| 午夜激情久久| 91传媒视频免费| 欧美性爽视频| 亚洲激情视频在线观看| 日韩免费视频一区二区视频在线观看| 91麻豆免费观看| 91色国产在线| 神马午夜电影一区二区三区在线观看 | 九九爱精品视频| 国产成人精品三级高清久久91| 欧美在线日韩在线| www日韩tube| 欧美一区二区三区白人| 精品99在线观看| 久久综合色天天久久综合图片| 国产熟人av一二三区| 久久中文亚洲字幕| y111111国产精品久久婷婷| 51精品视频| 亚洲天堂免费视频| 国产精品无码在线播放| 一区二区三区精品视频在线| 久久精品女同亚洲女同13| 男人的天堂亚洲| 黄色网址在线免费看| 国产精品巨作av| 国产精品免费久久久久影院| 一色桃子av在线| 亚洲精品小视频在线观看| 成品人视频ww入口| 午夜影院在线视频| 欧美三级电影一区| 久久久精品视频在线| 久久久久国产精品人| 亚洲男人天堂av在线| 一区二区三区四区五区精品视频| 亚洲春色在线视频| 第四色中文综合网| 国产日韩欧美自拍| 欧美巨大丰满猛性社交| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 一区三区二区视频| 好吊色视频一区二区| 欧美日韩亚洲综合| 精品免费囯产一区二区三区| 亚洲欧美电影院| 精品无人区无码乱码毛片国产| 国产精品自拍三区| 日日噜噜夜夜狠狠| 国产一区导航| 青草网在线观看| 91精品国偷自产在线电影| 免费在线成人av| 给我免费播放日韩视频| 日本三级亚洲精品| 欧美另类高清视频在线| 日韩在线观看中文字幕| 国产精品亚洲自拍| 国产一二三在线| 欧美日韩国产123| 天堂а√在线资源在线| 亚洲欧美综合精品久久成人| 亚洲国产成人在线观看| 欧美精品乱码久久久久久| 免费av中文字幕| 欧美日韩亚洲精品一区二区三区| 久久艹精品视频| 最新日韩av在线| 女人黄色一级片| 久久中文娱乐网| www.日本高清| 成人激情午夜影院| 人妻互换一二三区激情视频| 国产一区欧美日韩| 亚洲欧洲日本精品| 日韩高清国产一区在线| 黄色片久久久久| 亚洲一区二区三区高清| 天天夜碰日日摸日日澡性色av| 亚洲视频高清| 欲色天天网综合久久| 精品人妻人人做人人爽夜夜爽| 日韩精品成人一区二区三区| 国产免费成人在线| 国产精品久久久久9999高清| av免费观看大全| 在线亚洲精品| 99热成人精品热久久66| 久久午夜电影| 91色国产在线| 毛片一区二区三区| 成年网站免费在线观看| 国内成+人亚洲+欧美+综合在线| 潘金莲激情呻吟欲求不满视频| 精品一区二区三区免费| 一级片黄色免费| 国产黄色成人av| 久久性爱视频网站| 91丨九色丨尤物| 欧美成人国产精品一区二区| 欧美激情综合五月色丁香| 三上悠亚作品在线观看| 国产精品美女久久久久久| 美国美女黄色片| 国产精品日韩精品欧美在线| 午夜精品一区二区三级视频| 亚洲综合男人的天堂| 日韩精品在线免费视频| 欧美性欧美巨大黑白大战| 国产精品欧美久久久久天天影视 | 色综合久久精品| 无码人妻av免费一区二区三区 | 欧美黄免费看| 免费看国产曰批40分钟| 日本不卡在线视频| 午夜国产福利在线观看| 成人一级视频在线观看| 97人妻精品一区二区三区免| 国产亚洲精品久| 久久中文免费视频| 亚洲成va人在线观看| 日韩黄色片网站| 日韩一区二区三免费高清| 神宫寺奈绪一区二区三区| 这里只有精品视频在线| 日本高清在线观看视频| 青青久久aⅴ北条麻妃| 免费视频观看成人| 国产私拍一区| 久久一区二区中文字幕| 欧美久久在线观看| 欧美aaaaaa午夜精品| 欧美xxxx日本和非洲| 国产亚洲1区2区3区| 久久r这里只有精品| 色av综合在线| 亚洲精品久久久久avwww潮水| 国产婷婷成人久久av免费高清| 黄色小网站在线观看| 欧美一级视频免费在线观看| 999久久久国产999久久久| 精品国产一区二区三区久久久久久| 久久社区一区| 久久久久人妻精品一区三寸| 国产九色精品成人porny| 老牛影视av老牛影视av| 日韩欧美一区二区三区在线观看| 色综合天天综合网国产成人网 | 51国偷自产一区二区三区 | 色999久久久精品人人澡69| 国产欧美综合精品一区二区| 99视频精品全部免费在线视频| 九一国产精品视频| 狠狠色狠狠色合久久伊人| 熟女俱乐部一区二区视频在线| 一区二区三区小说| 一级黄色大片免费| 亚洲欧美精品一区二区| 波多野结衣乳巨码无在线观看| 国产欧美在线观看| 国产一区毛片| aa视频在线播放| 成人午夜私人影院| www.超碰在线观看| 欧美日韩国产首页在线观看| 免费理论片在线观看播放老| 欧美夫妻性生活xx| 年轻的保姆91精品| 亚洲午夜精品国产| 奇米777欧美一区二区| 亚洲av无码一区二区二三区| 亚洲制服丝袜av| 亚洲经典一区二区| 萌白酱国产一区二区| 外国成人毛片| 亚洲第一导航| 久久精品理论片| 91香蕉视频污在线观看| 日本精品一区二区三区四区的功能| 污污网站在线免费观看| 久久久久久久久久国产精品| 亚洲一区二区三区中文字幕在线观看 | 国产欧美久久久久久| 久久99青青| 一区二区在线播放视频| 国产亚洲一二三区| 日韩欧美国产另类| 曰本色欧美视频在线| 亚洲综合在线电影| 亚洲成人第一| 精品亚洲成av人在线观看| 欧美一级片在线视频| 91精品国产综合久久久久久漫画 | 精品国产鲁一鲁一区二区张丽| 亚洲精品久久久蜜桃动漫| 欧美激情精品久久久久久黑人| 日韩在线亚洲| 免费看黄在线看| 91首页免费视频| 亚洲视频 欧美视频| 最近更新的2019中文字幕| 一区二区三区日本视频| av 日韩 人妻 黑人 综合 无码| 国产黄人亚洲片| 国产成人愉拍精品久久| 亚洲色图狂野欧美| 国精品产品一区| 日本天堂免费a| 丁香婷婷在线观看| 91国产视频在线播放| 日韩人体视频| 自拍偷拍21p| 亚洲精品免费在线观看| 国产免费一区二区三区免费视频| 欧美日韩高清在线观看| 亚洲小说图片视频| 中文字幕永久有效| 亚洲午夜激情av| 精品福利视频导航大全| 成人福利网站在线观看| 国产精品二区影院| 日韩人妻无码一区二区三区| 欧美视频一区二区三区在线观看| 国产cdts系列另类在线观看| 精品一区二区国产| 久久精品久久精品| 国产精品16p| 在线视频中文亚洲| 一区二区三区四区高清视频 | 原纱央莉成人av片| 在线电影看在线一区二区三区| 国产成人午夜高潮毛片| 99精品在线播放| 美女少妇精品视频| 久9久9色综合| 老熟女高潮一区二区三区| 在线观看日韩电影| 四季久久免费一区二区三区四区| 欧美一进一出视频| 国产jizzjizz一区二区| 波多野结衣毛片|