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

一篇學會開發摸魚看書的側邊欄窗體

開發 前端
總有人拿到產品的需求,就著急開干,反正也懶的想開發中會發生啥,上線后多少人使用,管它三七二十一先堆起來代碼看一看,反正能跑就行,無論代碼還是你!

[[432993]]

一、說明

方向不對,努力白費!

總有人拿到產品的需求,就著急開干,反正也懶的想開發中會發生啥,上線后多少人使用,管它三七二十一先堆起來代碼看一看,反正能跑就行,無論代碼還是你!

其實很多時候在編寫代碼前,所需要做的技術調研、架構設計、模塊分層、數據結構、詳細分析、方案評審等,與三七二十一那家伙對比起來,好像都會顯得有點慢。但這個看上去慢的過程,卻能解決以后很多常見和麻煩的問題,比如產品需求迭代、業務流程變更、代碼邏輯更改、線上異常排查。雖然看著慢,但這個積基樹本的過程就像打地基一樣,總得有一個穩定的根基,才能蓋好整棟大樓。萬丈高樓平地起,勿在浮沙筑高臺

二、需求目的

如果你需要開發一個自定義功能的插件,無論是處理代碼、輔助ORM生成、日志信息記錄等,都會需要進行一個插件的功能配置進行初始化操作以及把對應功能展示到整個 IDEA 窗體中的右邊欄或者下邊欄中,這樣才能滿足一個插件的基本需求。

那么這樣就需要在 IDEA 窗體 File -> Settings 中擴展自己的配置窗體,以及開發自己需要的 ToolWindow 嵌入到 IDEA 中(左側、右側、下側),這里窗體的開發需要用到 Swing 但目前在 IDEA 中開發這樣的功能只需要拖拽窗體就可以,還是蠻容易的。

那么接下來我們以一個在 IDEA 中摸魚看書的場景為案例,學習配置窗體和閱讀窗體的功能實現。

三、案例開發

1. 工程結構

  1. guide-idea-plugin-tool-window 
  2. ├── .gradle 
  3. └── src 
  4.     ├── main 
  5.     │   └── java 
  6.     │    └── cn.bugstack.guide.idea.plugin  
  7.     │        └── factory 
  8.     │        │   ├── ReadFactory.java  
  9.     │        │   └── SettingFactory.java 
  10.     │        └── ui 
  11.     │        │  ├── ReadUI.java  
  12.     │        │  ├── ReadUI.form 
  13.     │        │  ├── SettingUI.java   
  14.     │        │  └── SettingUI.form 
  15.     │        └── Config     
  16.     ├── resources 
  17.     │   └── META-INF 
  18.     │       └── plugin.xml  
  19.     ├── build.gradle   
  20.     └── gradle.properties 

此工程主要涉及兩部分,在factory中一個是配置窗體、一個是閱讀窗體,與之對應的兩組UI的實現。最后 factory 類的實現都會配置到 plugin.xml 中進行使用,同時也是在 plugin.xml 中控制窗體位置和圖標。

2. 創建 UI 窗體

2.1 創建方式

New -> Swing UI Designer -> GUI Form

  • 在 Java 中創建窗體的方式主要有 AWT、Swing、JavaFx,由于 IDEA 使用 Swing 開發,所以這里創建 Swing 窗體的兼容性會更好。
  • 那么這里 Swing 窗體的創建可以是自己手寫窗體結構,也可以使用可視化拖拽的 GUI Form 如果你的窗體不復雜,其實拖拽的方式就可以滿足使用。

2.2 配置頁窗體

  1. public class SettingUI { 
  2.  
  3.     private JPanel mainPanel; 
  4.     private JPanel settingPanel; 
  5.     private JLabel urlLabel; 
  6.     private JTextField urlTextField; 
  7.     private JButton urlBtn; 
  8.  
  9.     public SettingUI() { 
  10.         // 給按鈕添加一個選擇文件的事件 
  11.         urlBtn.addActionListener(e -> { 
  12.             JFileChooser fileChooser = new JFileChooser(); 
  13.             fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); 
  14.             fileChooser.showOpenDialog(settingPanel); 
  15.             File file = fileChooser.getSelectedFile(); 
  16.             urlTextField.setText(file.getPath()); 
  17.         }); 
  18.     } 
  19.  
  20.     public JComponent getComponent() { 
  21.         return mainPanel; 
  22.     } 
  23.  
  24.     public JTextField getUrlTextField() { 
  25.         return urlTextField; 
  26.     } 

  • 配置頁窗體主要提供文章路徑的選擇,這里需要用到的標簽包括:JLabel、JTextField、JButton
  • 在使用 GUI Form 創建完窗體后,就會出現這樣一個可視化的頁面,右側可以把各類標簽拖到中間的面板中,左側進行設置展示名稱和屬性名稱。
  • 最終這里的代碼標簽代碼會展示到 SettingUI.java 中,而渲染內容會被隱藏,這樣的方式也比較方便控制一些自定義內容的添加,例如事件和新窗體等
  • 另外在 SettingUI.java 中,還需要在構造函數添加一個按鈕事件,用于打開文件選擇器,把我們需要打開的文件,設置到 urlTextField 中。

2.3 閱讀頁窗體

  1. public class ReadUI { 
  2.  
  3.     private JPanel mainPanel; 
  4.     private JTextPane textContent; 
  5.  
  6.     public JComponent getComponent() { 
  7.         return mainPanel; 
  8.     } 
  9.  
  10.     public JTextPane getTextContent() { 
  11.         return textContent; 
  12.     } 
  13.  

在窗體創建和配置頁窗體是一樣的,也是通過拖拽到面板中,用于展示路徑文件內容。

你可以適當的添加一些其他按鈕進去,比如翻頁閱讀、滾動條、字數展示等。

3. ToolWindow 工具框

為了把我們自己實現的閱讀窗體放到整個 IDEA 右側側邊欄中,我們需要創建一個實現了 ToolWindowFactory 的接口,并把實現類配置到 plugin.xml 中

  1. public class ReadFactory implements ToolWindowFactory { 
  2.  
  3.     private ReadUI readUI = new ReadUI(); 
  4.  
  5.     @Override 
  6.     public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) { 
  7.         // 獲取內容工廠的實例 
  8.         ContentFactory contentFactory = ContentFactory.SERVICE.getInstance(); 
  9.         // 獲取 ToolWindow 顯示的內容 
  10.         Content content = contentFactory.createContent(readUI.getComponent(), ""false); 
  11.         // 設置 ToolWindow 顯示的內容 
  12.         toolWindow.getContentManager().addContent(content); 
  13.         // 全局使用 
  14.         Config.readUI = readUI; 
  15.     } 
  16.  

接口方法 ToolWindowFactory#createToolWindowContent 是需要自己工具框類實現的方法,在這個 createToolWindowContent 方法中把自己的窗體 ReadUI 實例化后填充進去即可。

添加窗體的補助主要依賴于 ContentFactory.SERVICE.getInstance() 創建出 ContentFactory 并最終使用 toolWindow 添加窗體顯示 UI 即可。

這里我們額外的還添加了一個全局屬性 Config.readUI 這是為了后續可以在配置窗體中使用這個 UI 進行設置文件內容。

4. Configurable 配置框

  1. public class SettingFactory implements SearchableConfigurable { 
  2.  
  3.     private SettingUI settingUI = new SettingUI(); 
  4.  
  5.     @Override 
  6.     public @NotNull String getId() { 
  7.         return "test.id"
  8.     } 
  9.  
  10.     @Override 
  11.     public @Nls(capitalization = Nls.Capitalization.Title) String getDisplayName() { 
  12.         return "test-config"
  13.     } 
  14.  
  15.     @Override 
  16.     public @Nullable JComponent createComponent() { 
  17.         return settingUI.getComponent(); 
  18.     } 
  19.  
  20.     @Override 
  21.     public boolean isModified() { 
  22.         return true
  23.     } 
  24.  
  25.     @Override 
  26.     public void apply() throws ConfigurationException { 
  27.         String url = settingUI.getUrlTextField().getText(); 
  28.         // 設置文本信息 
  29.         try { 
  30.             File file = new File(url); 
  31.             RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r"); 
  32.             randomAccessFile.seek(0); 
  33.  
  34.             byte[] bytes = new byte[1024 * 1024]; 
  35.             int readSize = randomAccessFile.read(bytes); 
  36.  
  37.             byte[] copy = new byte[readSize]; 
  38.             System.arraycopy(bytes, 0, copy, 0, readSize); 
  39.  
  40.             String str = new String(copy, StandardCharsets.UTF_8); 
  41.  
  42.             // 設置內容 
  43.             Config.readUI.getTextContent().setText(str); 
  44.  
  45.         } catch (Exception ignore) { 
  46.         } 
  47.     } 
  48.  
  • 實現自 SearchableConfigurable 接口的方法比較多,包括:getId、getDisplayName、createComponent、isModified、apply 這些里面用于寫邏輯實現的主要是 createComponent 和 apply
  • createComponent 方法主要是把我們自己創建的 UI 面板提供給 JComponent
  • apply 是一個事件,當我們點擊完成配置的 OK、完成,時候就會觸發到這個方法。在這個方法中我們拿到文件的 URL 地址使用 RandomAccessFile 進行讀取解析文件,并最終把文件內容展示到閱讀窗體中 Config.readUI.getTextContent().setText(str);

5. 配置 plugin.xml

  1. <extensions defaultExtensionNs="com.intellij"
  2.     <!-- Add your extensions here --> 
  3.     <!-- 配置 File -> Settings -> Tools --> 
  4.     <projectConfigurable groupId="tools" displayName="My Test Config" id="test.id" 
  5.                          instance="cn.bugstack.guide.idea.plugin.factory.SettingFactory"/> 
  6.                           
  7.     <!-- 窗體 (IDEA 界面右側) --> 
  8.     <toolWindow id="Read-Book" secondary="false" anchor="right" icon="/icons/logo.png" 
  9.                 factoryClass="cn.bugstack.guide.idea.plugin.factory.ReadFactory"/> 
  10. </extensions> 

 

本次在 plugin.xml 中的主要配置內容就是 projectConfigurable 和 toolWindow,另外在 toolWindow 中還添加了一個 icon 的 logo,配置完成后就可以在 IDEA 頁面展示出我們的自己添加的窗體了。

四、插件測試

  • 通過 Plugin 啟動插件,這個時候會打開一個新的 IDEA 窗體,在這個新窗體中就可以看到我們添加的功能了。

配置文件路徑

  • 點擊選擇按鈕,選擇你的文件位置,選擇后點擊 OK

查看展示文件

確認好文件路徑后,就可以再右側欄看到自己的文件展示內容了。是不是在擴展些,就適合你摸魚了!?

五、總結

學習自定義開發UI,把UI填充到需要放置的 IDEA 窗體位置,并在窗體中添加功能的流程步驟,其實主要包括三方面:Swing UI、Factory 實現類、plugin 配置。

在 plugin 配置中,主要包括如窗體ID、位置、icon圖標、對應的實現類,如果不添加這些是不能正常展示窗體信息的。

 

另外可以以這個案例為基礎,添加自己想完成的功能,比如讓這個摸魚看書的功能更加完善,可以支持不同類型的文件,甚至可以是 PDF 的閱讀,以及你想看的書籍。

 

責任編輯:武曉燕 來源: bugstack蟲洞棧
相關推薦

2022-01-02 08:43:46

Python

2022-02-07 11:01:23

ZooKeeper

2022-06-30 22:53:18

數據結構算法

2021-08-01 07:19:16

語言OpenrestyNginx

2021-10-26 10:40:26

代理模式虛擬

2021-12-04 22:05:02

Linux

2022-05-17 08:02:55

GoTryLock模式

2021-07-06 08:59:18

抽象工廠模式

2023-11-28 08:29:31

Rust內存布局

2023-01-03 08:31:54

Spring讀取器配置

2021-07-02 09:45:29

MySQL InnoDB數據

2021-07-05 22:11:38

MySQL體系架構

2022-08-26 09:29:01

Kubernetes策略Master

2022-08-23 08:00:59

磁盤性能網絡

2021-05-11 08:54:59

建造者模式設計

2022-04-12 08:30:52

回調函數代碼調試

2021-07-16 22:43:10

Go并發Golang

2021-07-02 08:51:29

源碼參數Thread

2021-10-14 10:22:19

逃逸JVM性能

2021-04-29 10:18:18

循環依賴數組
點贊
收藏

51CTO技術棧公眾號

www.一区二区.com| 国产精品第一区| 亚洲一区二区三区无码久久| 中文不卡1区2区3区| 国产欧美综合在线观看第十页| 国产精品美女免费| 国产在线观看99| 教室别恋欧美无删减版| 欧美一区二区日韩| 成人免费在线小视频| 最新真实国产在线视频| 国产黄色91视频| 日韩免费中文字幕| 亚洲欧美一区二区三区四区五区| 网曝91综合精品门事件在线| 欧美高清视频不卡网| 日韩伦理在线免费观看| 337p日本欧洲亚洲大胆鲁鲁| www.欧美精品一二区| 国产一区香蕉久久| 在线观看国产亚洲| 亚洲91中文字幕无线码三区| 日韩精品亚洲元码| 久久久久久国产精品日本| 国产精品伦理| 五月婷婷久久丁香| 日韩不卡视频一区二区| 成av人电影在线观看| 丁香婷婷综合色啪| 成人美女免费网站视频| 波多野结衣电影在线播放| 国产综合欧美| 久久九九免费视频| 亚洲一级片在线播放| 狼人天天伊人久久| 日韩精品一区二| 国产女同无遮挡互慰高潮91| 深夜视频一区二区| 日韩欧美成人区| 可以在线看的av网站| 国产成人无吗| 国产精品久久久久久久久晋中| 欧美午夜免费| 同心难改在线观看| 成人精品国产免费网站| 97神马电影| 精品国产av一区二区| 蜜桃视频第一区免费观看| 国产精品久久久av| 天天爱天天做天天爽| 天堂一区二区在线| 国产成人精品一区二区三区| 日韩黄色在线视频| 99国产精品久久久久久久| 欧美激情视频给我| 精品无码黑人又粗又大又长| 国产精品va| 欧美精品videos| www.色小姐com| 亚洲欧美一级二级三级| 欧美美最猛性xxxxxx| 免费一级肉体全黄毛片| 亚洲一级二级| 午夜精品一区二区三区在线视频 | 国产精品99一区二区三| 中文字幕在线观看亚洲| 亚洲精品自拍视频在线观看| 99国产精品一区二区| 久久精品国产96久久久香蕉| 午夜剧场免费在线观看| 欧美成人一区二免费视频软件| 欧美成人免费一级人片100| 久久久久久久九九九九| 亚洲区国产区| 国产999精品视频| 一级成人免费视频| 国产一区二区三区综合| 国产不卡一区二区在线观看| 香蕉久久一区二区三区| 国产午夜精品美女毛片视频| 中文字幕在线中文字幕日亚韩一区 | 一区二区在线中文字幕电影视频| 自拍亚洲图区| 精品国产1区2区| 国产精品乱码久久久久| 精品久久亚洲| 日韩成人av网| 在线视频这里只有精品| 激情成人亚洲| 国产精品成熟老女人| 国产肥老妇视频| 91啪亚洲精品| 强伦女教师2:伦理在线观看| a在线视频v视频| 在线观看网站黄不卡| 69久久精品无码一区二区 | 日韩精品视频在线观看免费| 中文字幕欧美激情极品| 欧美视频福利| 国产精品久久久久久久电影| 亚洲欧美激情插| 国产婷婷色综合av蜜臀av| 亚洲第一综合网| 欧美性色综合| 国产精品久久久久久久久免费| 国产丰满果冻videossex| 久久久夜色精品亚洲| 无码人妻精品一区二区三区99v| 国产色播av在线| 91精品久久久久久蜜臀| 精品久久久久久中文字幕人妻最新| 精品久久影视| 午夜精品久久久99热福利| 91成人一区二区三区| 99久久精品情趣| 色一情一乱一乱一区91| av在线日韩| 日韩精品亚洲精品| 精品少妇久久久久久888优播| 精品在线免费视频| 欧美一级爱爱| 成人在线黄色电影| 日韩美一区二区三区| 天堂av免费在线| 日本美女一区二区三区| 欧美日本国产精品| 大桥未久在线视频| 精品国产亚洲一区二区三区在线观看| 久草手机视频在线观看| 日韩精彩视频在线观看| 国产乱人伦精品一区二区| 91高清在线观看视频| 欧美日韩视频在线观看一区二区三区| 欧美成人午夜精品免费| 亚洲日本成人| 国产日韩欧美亚洲一区| 欧美亚洲系列| 日韩精品在线网站| avove在线播放| 激情久久五月天| 中文视频一区视频二区视频三区| 日本黄色一区| 中文字幕日韩精品在线| 五月婷婷激情五月| 欧美激情一区二区三区蜜桃视频| 99蜜桃臀久久久欧美精品网站| 久久香蕉精品香蕉| 性色av一区二区三区红粉影视| 亚洲成a人片在线| 亚洲在线免费播放| 中国特级黄色片| 亚洲黄色影院| 精品一区二区三区日本| 伊人网在线播放| 亚洲美女久久久| 亚洲av无码精品一区二区| 国产亚洲成av人在线观看导航| 人妻无码视频一区二区三区| 教室别恋欧美无删减版| 成人a视频在线观看| 国产最新在线| 欧美本精品男人aⅴ天堂| 国产黄色片视频| 9色porny自拍视频一区二区| 男女高潮又爽又黄又无遮挡| 亚洲传媒在线| 国产精品老女人精品视频| 美女黄视频在线观看| 欧美一区二区三级| 国产成人综合欧美精品久久| 欧美aaaaaaaa牛牛影院| 欧美肥婆姓交大片| 天天操天天干天天干| 欧美性少妇18aaaa视频| 亚洲精品成人av久久| 国内成人自拍视频| 精品无码国模私拍视频| 狠狠色狠狠色综合婷婷tag| 国产美女久久精品| 污污网站在线看| 日韩成人在线免费观看| 夜夜躁日日躁狠狠久久av| 中文字幕日本乱码精品影院| 日本人dh亚洲人ⅹxx| 日韩午夜电影| 亚洲免费在线精品一区| 91精品国产自产在线丝袜啪| 欧洲成人性视频| 黄网站app在线观看| 亚洲第一区第二区| 中文字幕有码视频| 亚洲在线视频一区| 女人黄色一级片| 成人黄色国产精品网站大全在线免费观看 | 国内一区二区三区| 欧美日韩中文国产一区发布| 成人av在线播放| 全亚洲最色的网站在线观看| 91在线中文| 亚洲精品日韩久久久| 国产精品丝袜黑色高跟鞋| 性久久久久久久久| 久久av红桃一区二区禁漫| 91亚洲精华国产精华精华液| av在线免费看片| 久久性天堂网| 成人午夜视频在线观看免费| 999视频精品| 美女一区视频| 国产美女撒尿一区二区| 91精品免费久久久久久久久| av资源亚洲| 欧美黄色性视频| 激情影院在线观看| 亚洲视频在线看| 特黄aaaaaaaaa真人毛片| 91精品久久久久久久99蜜桃 | 欧美污视频久久久| h视频久久久| 91久久国产综合久久91精品网站| 波多野结衣久久精品| 欧美黑人又粗大| 国产激情在线观看| 色悠悠久久久久| 九色视频在线观看免费播放| 亚洲第一av在线| 亚洲国产精品国自产拍久久| 91精品一区二区三区久久久久久 | 亚洲v国产v在线观看| 五月国产精品| 久久久久久艹| 亚洲成aⅴ人片久久青草影院| 国产美女精品在线观看| 亚洲福利合集| 999精品视频一区二区三区| 自拍偷拍欧美日韩| 国产中文字幕亚洲| 日本电影久久久| 国产精品中文字幕在线观看| 成人不卡视频| 国产中文字幕日韩| 精品国产一区二区三区性色av| 91精品中国老女人| 在线免费成人| 亚洲a级在线观看| 欧美一区在线观看视频| 亚洲最大福利视频| 香蕉免费一区二区三区在线观看| 亚洲专区在线视频| 亚洲天堂av资源在线观看| 96成人在线视频| 北条麻妃在线一区二区免费播放| 国产精品国产三级欧美二区| 粉嫩精品导航导航| 久久天天狠狠| 精品国产日韩欧美| 在线观看成人一级片| 91国语精品自产拍| 国产一级做a爰片久久毛片男| 欧美视频导航| 黄在线观看网站| 免费精品视频在线| 波多野结衣在线免费观看| 国产成人av一区二区三区在线 | 欧美一级免费看| 男人av在线播放| 国产精品草莓在线免费观看| 欧美性生活一级| 成人动漫在线视频| 亚洲国产合集| 一区二区不卡在线| 亚洲一级网站| 99久久国产宗和精品1上映| 久久99蜜桃精品| 91精品又粗又猛又爽| 久久久久久影视| 国产老头老太做爰视频| 亚洲一区二区精品3399| aaaaaa毛片| 欧美一区二区在线观看| 亚洲欧洲视频在线观看| 深夜福利国产精品| 国产精品原创| 国产日本欧美一区| 青青操综合网| 亚洲欧洲在线一区| 伊人影院久久| 久久久久久蜜桃一区二区| 成人免费高清视频在线观看| 色欲AV无码精品一区二区久久| 亚洲免费观看高清完整版在线观看 | 国产一区高清视频| 色婷婷热久久| 好吊妞无缓冲视频观看| 久久99久久久欧美国产| 中文字幕无码人妻少妇免费| 国产精品久久久久影院老司| 国产精选第一页| 欧美日本一区二区| 欧美日韩国产综合视频 | 久久久久99精品成人片试看| 日韩欧美一区二区在线| aaa一区二区三区| 亚洲一区999| 爱啪视频在线观看视频免费| 成人午夜在线观看| 免费电影一区二区三区| 大西瓜av在线| 国模大尺度一区二区三区| 久久精品无码一区| 午夜私人影院久久久久| 国产麻豆免费观看| 曰本色欧美视频在线| 美女露胸视频在线观看| 亚洲综合日韩在线| 欧美黄色录像片| 日av中文字幕| 91丨porny丨国产入口| 精品无码m3u8在线观看| 欧美一区二区三区白人| 麻豆传媒在线免费看| 国产精品9999| 精品在线播放| 免费黄色福利视频| 91麻豆精品视频| 日韩黄色a级片| 亚洲成人教育av| 久草成色在线| 超碰在线观看97| 午夜国产精品视频免费体验区| 亚洲a级黄色片| 国产精品国产a| 亚洲一级视频在线观看| 这里只有精品视频在线| 亚洲综合在线电影| 欧美一区1区三区3区公司 | 91极品在线| 亚洲一区二区免费在线| 91精品国产乱码久久久久久久| www.com黄色片| 国产精品久久三| 在线观看黄色网| www.欧美精品一二三区| 欧美爱爱视频| 懂色av一区二区三区四区五区| 久久精品国产77777蜜臀| 999久久久国产| 69久久夜色精品国产69蝌蚪网| 男人和女人做事情在线视频网站免费观看 | 成人黄色777网| 国产在线视频第一页| 亚洲国产欧美久久| 在线看片福利| 任我爽在线视频精品一| 奇米精品一区二区三区在线观看一| 男人的天堂av网| 欧美群妇大交群的观看方式| 成人黄视频在线观看| 不卡一区二区三区四区五区| 在线成人h网| 三级网站在线免费观看| 欧美色综合影院| 99福利在线| 国产乱码一区| 日日骚欧美日韩| 香蕉久久久久久久| 日韩一区二区视频| 欧美办公室脚交xxxx| 日本在线一区| 韩国av一区二区三区四区| 久久久久久久福利| 亚洲欧美日韩国产精品| 欧美男女视频| 久久久久99精品成人片| 久久人人爽爽爽人久久久| 中文字幕日本人妻久久久免费| 操日韩av在线电影| 精品少妇一区| 在线观看av日韩| 亚洲在线免费播放| 超碰国产在线| 99久re热视频这里只有精品6| 国产一区二区你懂的| 成人18视频免费69| 亚洲精品一区二区三区在线观看| 三级成人黄色影院| 超碰超碰超碰超碰超碰| 久久免费电影网| 国产青青草视频| 欧洲精品毛片网站| 亚洲乱码免费伦视频| 国产高清自拍视频| 69精品人人人人| 九九热线视频只有这里最精品| 狠狠精品干练久久久无码中文字幕| 久久久久久久久久久久久夜| 国产夫绿帽单男3p精品视频| 日本精品性网站在线观看| 欧美暴力喷水在线| 少妇的滋味中文字幕bd|