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

Java Swing編程:JTable表格

開發 后端
表格是GUI編程中使用較多,但也是最麻煩的一個控件之一。表格是用來顯示二維數據,提供編輯,選擇等功能。如果只是顯示數據,這還是非常easy的,只要在JTable中傳入二維數組或集合就可以了。

表格是GUI編程中使用較多,但也是最麻煩的一個控件之一。表格是用來顯示二維數據,提供編輯,選擇等功能。如果只是顯示數據,這還是非常easy的,只要在JTable中傳入二維數組或集合就可以了,eg

  1. public class SimpleTable  
  2. {  
  3.     JFrame jf = new JFrame("簡單表格");  
  4.     JTable table;  
  5.     //定義二維數組作為表格數據  
  6.     Object[][] tableData =   
  7.     {  
  8.         new Object[]{"李清照" , 29 , "女"},  
  9.         new Object[]{"蘇格拉底"56 , "男"},  
  10.         new Object[]{"李白"35 , "男"},  
  11.         new Object[]{"弄玉"18 , "女"},  
  12.         new Object[]{"虎頭" , 2 , "男"}  
  13.     };  
  14.     //定義一維數據作為列標題  
  15.     Object[] columnTitle = {"姓名" , "年齡" , "性別"};  
  16.     public void init()  
  17.     {  
  18.         //以二維數組和一維數組來創建一個JTable對象  
  19.         table = new JTable(tableData , columnTitle);  
  20.         //將JTable對象放在JScrollPane中,并將該JScrollPane放在窗口中顯示出來  
  21.         jf.add(new JScrollPane(table));  
  22.         jf.pack();  
  23.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  24.         jf.setVisible(true);  
  25.     }  
  26.     public static void main(String[] args)   
  27.     {  
  28.         new SimpleTable().init();  
  29.     }  
  30. }  

下面舉個JTable表格調整和選擇方式的例子,eg

  1. public class AdjustingWidth  
  2. {  
  3.     JFrame jf = new JFrame("調整表格列寬");  
  4.     JMenuBar menuBar = new JMenuBar();  
  5.     JMenu adjustModeMenu = new JMenu("調整方式");  
  6.     JMenu selectUnitMenu = new JMenu("選擇單元");  
  7.     JMenu selectModeMenu = new JMenu("選擇方式");  
  8.  
  9.     //定義5個單選框按鈕,用以控制表格的寬度調整方式  
  10.     JRadioButtonMenuItem[] adjustModesItem = new JRadioButtonMenuItem[5];  
  11.     //定義3個單選框按鈕,用以控制表格的選擇方式  
  12.     JRadioButtonMenuItem[] selectModesItem = new JRadioButtonMenuItem[3];  
  13.  
  14.     JCheckBoxMenuItem rowsItem = new JCheckBoxMenuItem("選擇行");  
  15.     JCheckBoxMenuItem columnsItem = new JCheckBoxMenuItem("選擇列");  
  16.     JCheckBoxMenuItem cellsItem = new JCheckBoxMenuItem("選擇單元格");  
  17.     ButtonGroup adjustBg = new ButtonGroup();  
  18.     ButtonGroup selectBg = new ButtonGroup();  
  19.     //定義一個int類型的數組,用于保存表格所有的寬度調整方式  
  20.     int[] adjustModes = new int[]{  
  21.         JTable.AUTO_RESIZE_OFF,  
  22.         JTable.AUTO_RESIZE_NEXT_COLUMN,  
  23.         JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS,  
  24.         JTable.AUTO_RESIZE_LAST_COLUMN,  
  25.         JTable.AUTO_RESIZE_ALL_COLUMNS   
  26.     };  
  27.     int[] selectModes = new int[]{  
  28.         ListSelectionModel.MULTIPLE_INTERVAL_SELECTION ,  
  29.         ListSelectionModel.SINGLE_INTERVAL_SELECTION ,  
  30.         ListSelectionModel.SINGLE_SELECTION  
  31.     };  
  32.     JTable table;  
  33.     //定義二維數組作為表格數據  
  34.     Object[][] tableData =   
  35.     {  
  36.         new Object[]{"李清照" , 29 , "女"},  
  37.         new Object[]{"蘇格拉底"56 , "男"},  
  38.         new Object[]{"李白"35 , "男"},  
  39.         new Object[]{"弄玉"18 , "女"},  
  40.         new Object[]{"虎頭" , 2 , "男"}  
  41.     };  
  42.     //定義一維數據作為列標題  
  43.     Object[] columnTitle = {"姓名" , "年齡" , "性別"};  
  44.  
  45.     public void init()  
  46.     {  
  47.         //以二維數組和一維數組來創建一個JTable對象  
  48.         table = new JTable(tableData , columnTitle);  
  49.  
  50.         //-----------為窗口安裝設置表格調整方式的菜單-----------  
  51.         adjustModesItem[0] = new JRadioButtonMenuItem("只調整表格");  
  52.         adjustModesItem[1] = new JRadioButtonMenuItem("只調整下一列");  
  53.         adjustModesItem[2] = new JRadioButtonMenuItem("平均調整余下列");  
  54.         adjustModesItem[3] = new JRadioButtonMenuItem("只調整最后一列");  
  55.         adjustModesItem[4] = new JRadioButtonMenuItem("平均調整所有列");  
  56.         menuBar.add(adjustModeMenu);  
  57.         for (int i = 0; i < adjustModesItem.length ; i++)  
  58.         {  
  59.             //默認選中第三個菜單項,即對應表格默認的寬度調整方式  
  60.             if (i == 2)  
  61.             {  
  62.                 adjustModesItem[i].setSelected(true);  
  63.             }  
  64.             adjustBg.add(adjustModesItem[i]);  
  65.             adjustModeMenu.add(adjustModesItem[i]);  
  66.             final int index = i;  
  67.             //為設置調整方式的菜單項添加監聽器  
  68.             adjustModesItem[i].addActionListener(new ActionListener()  
  69.             {  
  70.                 public void actionPerformed(ActionEvent evt)  
  71.                 {  
  72.                     //如果當前菜單項處于選中狀態,表格使用對應的調整方式  
  73.                     if (adjustModesItem[index].isSelected())  
  74.                     {  
  75.                         table.setAutoResizeMode(adjustModes[index]);  
  76.                     }  
  77.                 }  
  78.             });  
  79.         }  
  80.         //-----------為窗口安裝設置表格選擇方式的菜單-----------  
  81.         selectModesItem[0] = new JRadioButtonMenuItem("無限制");  
  82.         selectModesItem[1] = new JRadioButtonMenuItem("單獨的連續區");  
  83.         selectModesItem[2] = new JRadioButtonMenuItem("單選");  
  84.         menuBar.add(selectModeMenu);  
  85.         for (int i = 0; i < selectModesItem.length ; i++)  
  86.         {  
  87.             //默認選中第一個菜單項,即對應表格默認的選擇方式  
  88.             if (i == 0)  
  89.             {  
  90.                 selectModesItem[i].setSelected(true);  
  91.             }  
  92.             selectBg.add(selectModesItem[i]);  
  93.             selectModeMenu.add(selectModesItem[i]);  
  94.             final int index = i;  
  95.             //為設置選擇方式的菜單項添加監聽器  
  96.             selectModesItem[i].addActionListener(new ActionListener()  
  97.             {  
  98.                 public void actionPerformed(ActionEvent evt)  
  99.                 {  
  100.                     //如果當前菜單項處于選中狀態,表格使用對應的選擇方式  
  101.                     if (selectModesItem[index].isSelected())  
  102.                     {  
  103.                         table.getSelectionModel().setSelectionMode(selectModes[index]);  
  104.                     }  
  105.                 }  
  106.             });  
  107.         }  
  108.         menuBar.add(selectUnitMenu);  
  109.         //-----------為窗口安裝設置表格選擇單元的菜單-----------  
  110.         rowsItem.setSelected(table.getRowSelectionAllowed());  
  111.         columnsItem.setSelected(table.getColumnSelectionAllowed());  
  112.         cellsItem.setSelected(table.getCellSelectionEnabled());  
  113.  
  114.         rowsItem.addActionListener(new ActionListener()  
  115.         {  
  116.             public void actionPerformed(ActionEvent event)  
  117.             {  
  118.                 table.clearSelection();  
  119.                 //如果該菜單項處于選中狀態,設置表格的選擇單元是行  
  120.                 table.setRowSelectionAllowed(rowsItem.isSelected());  
  121.                 //如果選擇行、選擇列同時被選中,其實質是選擇單元格  
  122.                 cellsItem.setSelected(table.getCellSelectionEnabled());  
  123.             }  
  124.         });  
  125.         selectUnitMenu.add(rowsItem);  
  126.         columnsItem.addActionListener(new ActionListener()  
  127.         {  
  128.             public void actionPerformed(ActionEvent event)  
  129.             {  
  130.                 table.clearSelection();  
  131.                 //如果該菜單項處于選中狀態,設置表格的選擇單元是列  
  132.                 table.setColumnSelectionAllowed(columnsItem.isSelected());  
  133.                 //如果選擇行、選擇列同時被選中,其實質是選擇單元格  
  134.                 cellsItem.setSelected(table.getCellSelectionEnabled());  
  135.             }  
  136.         });  
  137.         selectUnitMenu.add(columnsItem);  
  138.         cellsItem.addActionListener(new ActionListener()  
  139.         {  
  140.             public void actionPerformed(ActionEvent event)  
  141.             {  
  142.                 table.clearSelection();  
  143.                 //如果該菜單項處于選中狀態,設置表格的選擇單元是單元格  
  144.                 table.setCellSelectionEnabled(cellsItem.isSelected());  
  145.                 //該選項的改變會同時影響選擇行、選擇列兩個菜單  
  146.                 rowsItem.setSelected(table.getRowSelectionAllowed());  
  147.                 columnsItem.setSelected(table.getColumnSelectionAllowed());  
  148.             }  
  149.         });  
  150.         selectUnitMenu.add(cellsItem);  
  151.  
  152.         jf.setJMenuBar(menuBar);  
  153.         //分別獲取表格的三個表格列,并設置三列的最小寬度,最佳寬度和最大寬度  
  154.         TableColumn nameColumn = table.getColumn(columnTitle[0]);  
  155.         nameColumn.setMinWidth(40);  
  156.         TableColumn ageColumn = table.getColumn(columnTitle[1]);  
  157.         ageColumn.setPreferredWidth(50);  
  158.         TableColumn genderColumn = table.getColumn(columnTitle[2]);  
  159.         genderColumn.setMaxWidth(50);  
  160.  
  161.  
  162.         //將JTable對象放在JScrollPane中,并將該JScrollPane放在窗口中顯示出來  
  163.         jf.add(new JScrollPane(table));  
  164.         System.out.println(table.getModel());  
  165.         jf.pack();  
  166.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  167.         jf.setVisible(true);  
  168.     }  
  169.  
  170.     public static void main(String[] args)   
  171.     {  
  172.         new AdjustingWidth().init();  
  173.     }  
  174. }  

和JList,JTree類似,JTable采用TableModel來保存表格中的所有狀態數據,采用TableColumnModel來保存所有列的數據。eg

  1. public class TestDefaultTableModel  
  2. {  
  3.     JFrame mainWin = new JFrame("管理數據行、數據列");  
  4.     final int COLUMN_COUNT = 5;  
  5.     DefaultTableModel model;  
  6.     JTable table;  
  7.     //用于保存被隱藏列的List集合  
  8.     ArrayList<TableColumn> hiddenColumns = new ArrayList<TableColumn>();  
  9.     public void init()  
  10.     {  
  11.         model = new DefaultTableModel(COLUMN_COUNT ,COLUMN_COUNT);  
  12.         for (int i = 0; i < COLUMN_COUNT ; i++ )  
  13.         {  
  14.             for (int j = 0; j < COLUMN_COUNT ; j++ )  
  15.             {  
  16.                 model.setValueAt("老單元格值 " + i + " " + j , i , j);  
  17.             }  
  18.         }  
  19.  
  20.         table = new JTable(model);  
  21.  
  22.         mainWin.add(new JScrollPane(table), BorderLayout.CENTER);  
  23.  
  24.         //為窗口安裝菜單  
  25.         JMenuBar menuBar = new JMenuBar();  
  26.         mainWin.setJMenuBar(menuBar);  
  27.         JMenu tableMenu = new JMenu("管理");  
  28.         menuBar.add(tableMenu);  
  29.  
  30.         JMenuItem hideColumnsItem = new JMenuItem("隱藏選中列");  
  31.         hideColumnsItem.addActionListener(new ActionListener()  
  32.         {  
  33.             public void actionPerformed(ActionEvent event)  
  34.             {  
  35.                 //獲取所有選中列的索引  
  36.                 int[] selected = table.getSelectedColumns();  
  37.                 TableColumnModel columnModel = table.getColumnModel();  
  38.                 //依次把每一個選中的列隱藏起來,并使用List把這些列保存起來  
  39.                 for (int i = selected.length - 1; i >= 0; i--)  
  40.                 {  
  41.                     TableColumn column = columnModel.getColumn(selected[i]);  
  42.                     table.removeColumn(column);  
  43.                     //把隱藏的列保存起來,確保以后可以顯示出來  
  44.                     hiddenColumns.add(column);  
  45.                 }  
  46.             }  
  47.         });  
  48.         tableMenu.add(hideColumnsItem);  
  49.  
  50.         JMenuItem showColumnsItem = new JMenuItem("顯示隱藏列");  
  51.         showColumnsItem.addActionListener(new ActionListener()  
  52.         {  
  53.             public void actionPerformed(ActionEvent event)  
  54.             {  
  55.                 //把所有隱藏列依次顯示出來  
  56.                 for (TableColumn tc : hiddenColumns)  
  57.                 {  
  58.                     //依次把所有隱藏的列顯示出來  
  59.                     table.addColumn(tc);  
  60.                 }  
  61.                 //清空保存隱藏列的List集合  
  62.                 hiddenColumns.clear();              
  63.             }  
  64.         });  
  65.         tableMenu.add(showColumnsItem);  
  66.  
  67.         JMenuItem addColumnItem = new JMenuItem("插入選中列");  
  68.         addColumnItem.addActionListener(new ActionListener()  
  69.         {  
  70.             public void actionPerformed(ActionEvent event)  
  71.             {  
  72.                 //獲取所有選中列的索引  
  73.                 int[] selected = table.getSelectedColumns();  
  74.                 TableColumnModel columnModel = table.getColumnModel();  
  75.                 //依次把選中的列添加到JTable之后  
  76.                 for (int i = selected.length - 1; i >= 0; i--)  
  77.                 {    
  78.                     TableColumn column = columnModel.getColumn(selected[i]);  
  79.                     table.addColumn(column);  
  80.                 }  
  81.             }  
  82.         });  
  83.         tableMenu.add(addColumnItem);  
  84.  
  85.         JMenuItem addRowItem = new JMenuItem("增加行");  
  86.         addRowItem.addActionListener(new ActionListener()  
  87.         {  
  88.             public void actionPerformed(ActionEvent event)  
  89.             {  
  90.                 //創建一個String數組作為新增行的內容  
  91.                 String[] newCells = new String[COLUMN_COUNT];  
  92.                 for (int i = 0; i < newCells.length; i++)  
  93.                 {  
  94.                     newCells[i] = "新單元格值 " + model.getRowCount() + " " + i;  
  95.                 }  
  96.                 //向TableModel中新增一行。  
  97.                 model.addRow(newCells);  
  98.             }  
  99.         });  
  100.         tableMenu.add(addRowItem);  
  101.  
  102.         JMenuItem removeRowsItem = new  JMenuItem("刪除選中行");  
  103.         removeRowsItem.addActionListener(new ActionListener()  
  104.         {  
  105.             public void actionPerformed(ActionEvent event)  
  106.             {  
  107.                 //獲取所有選中行  
  108.                 int[] selected = table.getSelectedRows();  
  109.                 //依次刪除所有選中行  
  110.                 for (int i = selected.length - 1; i >= 0; i--)  
  111.                 {  
  112.                     model.removeRow(selected[i]);  
  113.                 }  
  114.             }  
  115.         });  
  116.         tableMenu.add(removeRowsItem);  
  117.  
  118.         mainWin.pack();  
  119.         mainWin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  120.         mainWin.setVisible(true);  
  121.     }  
  122.  
  123.     public static void main(String[] args)   
  124.     {  
  125.         new TestDefaultTableModel().init();  
  126.     }  

但要注意列的增加,只是將原來隱藏的列顯示,而不是真正增加列,你要新增的話那就重新new個JTable

前面講的表格,單元格都是字符串,這是由于我們傳入的都是DefaultTableModel它最終調用toString方法來繪制表格,具體自定義單元格的方法如下,eg

  1. public class TestTableCellRenderer  
  2. {  
  3.     JFrame jf = new JFrame("使用單元格繪制器");  
  4.     JTable table;  
  5.     //定義二維數組作為表格數據  
  6.     Object[][] tableData =   
  7.     {  
  8.         new Object[]{"李清照" , 29 , "女" , new ImageIcon("icon/3.gif") , true},  
  9.         new Object[]{"蘇格拉底"56 , "男" , new ImageIcon("icon/1.gif") , false},  
  10.         new Object[]{"李白"35 , "男" , new ImageIcon("icon/4.gif")  , true},  
  11.         new Object[]{"弄玉"18 , "女" , new ImageIcon("icon/2.gif")  , true},  
  12.         new Object[]{"虎頭" , 2 , "男" , new ImageIcon("icon/5.gif") , true}  
  13.     };  
  14.     //定義一維數據作為列標題  
  15.     String[] columnTitle = {"姓名" , "年齡" , "性別" , "主頭像" , "是否中國人"};  
  16.     public void init()  
  17.     {  
  18.         //以二維數組和一維數組來創建一個ExtendedTableModel對象  
  19.         ExtendedTableModel model = new ExtendedTableModel(columnTitle , tableData);  
  20.         //以ExtendedTableModel來創建JTable  
  21.         table = new JTable( model);  
  22.         table.setRowSelectionAllowed(false);  
  23.         table.setRowHeight(40);  
  24.         //獲取第三列  
  25.         TableColumn lastColumn = table.getColumnModel().getColumn(2);  
  26.         //對第三列采用自定義的單元格繪制器  
  27.         lastColumn.setCellRenderer(new GenderTableCellRenderer());  
  28.  
  29.         //將JTable對象放在JScrollPane中,并將該JScrollPane放在窗口中顯示出來  
  30.         jf.add(new JScrollPane(table));  
  31.         jf.pack();  
  32.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  33.         jf.setVisible(true);  
  34.     }  
  35.     public static void main(String[] args)   
  36.     {  
  37.         new TestTableCellRenderer().init();  
  38.     }  
  39. }  
  40.  
  41. class ExtendedTableModel extends DefaultTableModel  
  42. {  
  43.     //重新提供一個構造器,該構造器的實現委托給DefaultTableModel父類  
  44.     public ExtendedTableModel(String[] columnNames , Object[][] cells)  
  45.     {  
  46.         super(cells , columnNames);  
  47.     }  
  48.     //重寫getColumnClass方法,根據每列的第一個值來返回其真實的數據類型  
  49.     public Class getColumnClass(int c)   
  50.     {  
  51.         return getValueAt(0 , c).getClass();  
  52.     }  
  53. }  
  54.  
  55. class GenderTableCellRenderer extends JPanel implements TableCellRenderer  
  56. {  
  57.     private String cellValue;  
  58.     //定義圖標的寬度和高度  
  59.     final int ICON_WIDTH = 23;  
  60.     final int ICON_HEIGHT = 21;  
  61.     public Component getTableCellRendererComponent(JTable table, Object value,   
  62.         boolean isSelected, boolean hasFocus, int row, int column)  
  63.     {  
  64.         cellValue = (String)value;  
  65.         //設置選中狀態下繪制邊框  
  66.         if (hasFocus)  
  67.         {  
  68.             setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));  
  69.         }  
  70.         else 
  71.         {  
  72.             setBorder(null);  
  73.         }  
  74.         return this;  
  75.     }  
  76.     //重寫paint方法,負責繪制該單元格內容  
  77.     public void paint(Graphics g)  
  78.     {  
  79.         //如果表格值為"男"或"male",則繪制一個男性圖標  
  80.         if (cellValue.equalsIgnoreCase("男")   
  81.             || cellValue.equalsIgnoreCase("male"))  
  82.         {  
  83.             drawImage(g , new ImageIcon("icon/male.gif").getImage());   
  84.         }  
  85.         //如果表格值為"女"或"female",則繪制一個女性圖標  
  86.         if (cellValue.equalsIgnoreCase("女")   
  87.             || cellValue.equalsIgnoreCase("female"))  
  88.         {  
  89.             drawImage(g , new ImageIcon("icon/female.gif").getImage());   
  90.         }  
  91.     }  
  92.     //繪制圖標的方法  
  93.     private void drawImage(Graphics g , Image image)  
  94.     {  
  95.         g.drawImage(image, (getWidth() - ICON_WIDTH ) / 2   
  96.             , (getHeight() - ICON_HEIGHT) / 2 , null);  
  97.     }  

我這里只是實現了每列不同的控件,大家還可以自定義一個表格每行每列都是不同的控件,那就要得到單元格再setCellRender。

原文鏈接:http://blog.csdn.net/terryzero/article/details/3838423

【編輯推薦】

  1. Java Swing編程:JTree樹
  2. Java Swing編程:微調控制器和列表框
  3. Java Swing編程:進度條和滑動條
  4. Java Swing編程:Applet和JApplet
  5. Java Swing編程:拖放功能
責任編輯:林師授 來源: terryzero的博客
相關推薦

2009-07-14 09:28:26

JTable和TablSwing

2012-01-17 13:41:34

JavaSwing

2012-01-17 14:05:29

JavaSwing

2012-01-17 13:46:55

JavaSwing

2012-01-17 13:53:16

JavaSwing

2012-01-17 13:16:34

JavaSwing

2012-01-17 13:58:17

JavaSwing

2009-07-16 13:26:32

Swing增加

2012-08-09 11:20:40

Swing

2012-01-17 14:01:33

JavaSwing

2009-07-10 14:20:01

AcceleratorJava Swing

2009-07-10 11:45:44

Java Swing

2009-07-16 11:13:50

Java Swing

2009-07-10 10:47:01

Java Swing

2009-07-10 13:09:53

.Net與Java S

2009-07-15 15:35:59

Swing程序Swing性能

2009-07-10 15:10:02

Java Swing經

2009-07-16 08:53:03

Swing任務Swing線程

2009-07-15 13:48:26

Swing模型和渲染器

2009-04-30 09:10:42

JavaSwing線程安全
點贊
收藏

51CTO技術棧公眾號

77777亚洲午夜久久多人| 最新国产精品精品视频| 成人av综合一区| 欧美在线观看一区二区三区| 精品免费国产一区二区| 男女污污视频在线观看| 日韩精品成人一区二区在线| 中文字幕精品在线| 99精品视频免费版的特色功能| 手机在线免费看av| 国产麻豆91精品| 欧美大片第1页| 中文字幕一区二区人妻在线不卡 | 中文成人在线| 亚洲国产精品精华液网站| 久久青青草综合| 91精品在线视频观看| 亚洲美女网站| 亚洲性69xxxbbb| 美女露出粉嫩尿囗让男人桶| 亚洲成人短视频| 亚洲视频一区在线| 精品乱子伦一区二区三区| 欧美三级网站在线观看| 1000部精品久久久久久久久| 欧美精品日韩一本| 日本毛片在线免费观看| 在线你懂的视频| 欧美国产综合色视频| 国产日韩精品一区二区| 国产精品一区二区6| 操欧美老女人| 日韩午夜av一区| 欧美成人一区二区在线观看| 日本最黄一级片免费在线| 波多野结衣精品在线| 成人免费网站在线看| 中文字幕永久在线| 一本色道久久综合| 欧美成人剧情片在线观看| 精品无码人妻一区二区免费蜜桃| 狠狠久久伊人| 欧美羞羞免费网站| 成人av在线播放观看| 免费高清完整在线观看| 亚洲国产精品高清| 日本一区二区三区四区在线观看| 亚洲aaaaaaa| 久久99精品久久久久子伦| 中文字幕欧美色图| 久久精品人人做人人爽电影蜜月| 免费成人高清视频| 精品国产精品国产精品| 神马午夜久久| 亚洲第一天堂无码专区| 久久久久免费精品| 少妇视频在线观看| 欧美日韩精品在线观看| 麻豆视频传媒入口| av免费在线观| 一区二区三区四区蜜桃| 亚洲欧美日产图| www.91在线| 国产精品理伦片| 色播五月综合| 毛片在线视频| 一区二区三区欧美亚洲| 国产黄色激情视频| av蜜臀在线| 午夜欧美视频在线观看| 日韩精品xxxx| 亚洲私拍视频| 天天色 色综合| 成年人网站免费视频| aa在线视频| 亚洲成人在线免费| 婷婷无套内射影院| 超碰资源在线| 色综合视频在线观看| 亚洲国产精品三区| 四虎精品在线观看| 日韩精品一区二区三区swag| 午夜男人的天堂| 男男gay无套免费视频欧美| 亚洲三级免费看| 人妻无码一区二区三区免费| 亚洲国产一区二区三区在线播放| 自拍偷拍亚洲在线| 国产wwwwxxxx| 亚洲调教视频在线观看| 日本精品va在线观看| 国产黄色免费视频| 国产乱码精品一区二区三| 亚洲综合成人婷婷小说| 成人h动漫精品一区二区无码| 国产精品一区二区免费不卡| 国产一区在线观| 你懂的视频在线观看| 亚洲欧美日韩中文字幕一区二区三区| 成品人视频ww入口| xx欧美xxx| 欧美视频一二三区| 午夜剧场免费看| 欧美大人香蕉在线| 97国产一区二区精品久久呦| 日本成人一级片| 国产一区二区精品久久99| 麻豆传媒一区二区| 91美女视频在线| 亚洲精品免费电影| 国产无套内射久久久国产| 久久久久毛片| 亚洲精品久久久久久久久久久| www.色多多| 综合久久一区| 国产精品jizz在线观看麻豆| www.久久久久久| 国产日韩影视精品| 日本中文字幕在线视频观看| av免费在线观看网址| 日韩欧美在线第一页| 丰满少妇一区二区三区专区| 成人黄色小视频| 51ⅴ精品国产91久久久久久| 99精品视频免费看| 国产亚洲成av人在线观看导航| 路边理发店露脸熟妇泻火| 欧美另类老肥妇| 日韩精品中文字幕在线一区| 国产91丝袜美女在线播放| 亚洲人成毛片在线播放女女| 亚洲xxxx18| 在线观看的av| 欧美午夜激情在线| 亚洲熟女乱综合一区二区| 欧美中文字幕一区二区| 国产91精品不卡视频| 一区二区 亚洲| 中文av一区二区| 丰满少妇在线观看| 免费短视频成人日韩| 久久久国产精品x99av| 日本成人一级片| 国产色一区二区| 777米奇影视第四色| 亚洲一区二区三区中文字幕在线观看| 正在播放欧美一区| a片在线免费观看| www.日韩精品| 久久精品国产sm调教网站演员| 懂色av色香蕉一区二区蜜桃| 中文字幕精品—区二区| 亚洲精品国产精品乱码视色| 国产欧美视频在线观看| 精品久久久久久久免费人妻| 丝袜连裤袜欧美激情日韩| 国内揄拍国内精品少妇国语| 亚洲av无码国产综合专区| 一区二区三区视频在线看| 色婷婷一区二区三区在线观看| 久久精品久久久| 国产精品色视频| 毛片在线看网站| 欧美一区在线视频| 久久久.www| av一区二区三区在线| 99久久国产综合精品五月天喷水| 亚洲专区**| 国模私拍一区二区三区| 午夜小视频在线播放| 欧美午夜精品久久久久久浪潮| 91精品人妻一区二区| 日韩高清一区二区| 日本一区二区在线视频观看| 日韩免费va| 日韩中文字幕免费视频| 99视频国产精品免费观看a| 亚洲在线免费播放| 2018国产精品| 另类图片国产| 中文字幕精品—区二区日日骚| 麻豆国产一区| 91精品国产91久久久| 国产裸舞福利在线视频合集| 6080午夜不卡| 日韩黄色在线视频| 欧美激情综合在线| 韩国三级在线看| 丝袜美腿亚洲综合| 男人天堂网站在线| 色狠狠久久av综合| 成人黄色免费片| 九色porny丨入口在线| 亚洲欧美日韩精品久久奇米色影视| 国产成人麻豆免费观看| 亚洲激情男女视频| 91精品小视频| 精品在线一区二区| 精品这里只有精品| 一精品久久久| 欧美日韩精品综合| 免费看日产一区二区三区| 欧美一区三区三区高中清蜜桃| 91av资源在线| 亚洲国产成人精品一区二区| 久久久免费高清视频| 亚洲欧美成人一区二区三区| 亚洲一区二区乱码| 国产成人在线视频播放| 99草草国产熟女视频在线| 欧美视频二区| 日韩欧美精品一区二区| 视频成人永久免费视频| 国产精品普通话| xxxx视频在线| 色噜噜久久综合伊人一本| 黄色小视频免费观看| 欧美日韩国产片| 国产又黄又粗又爽| 一区二区理论电影在线观看| 国产无遮挡在线观看| 91在线一区二区三区| 91丨porny丨九色| 热久久国产精品| 97视频久久久| 国产日韩三级| 999在线观看免费大全电视剧| 日韩欧美少妇| 日韩美女av在线免费观看| 999av小视频在线| 欧美成年人视频| 免费av不卡| 亚洲性av网站| 青青色在线视频| 欧美不卡123| www.亚洲天堂.com| 91精品国产综合久久香蕉麻豆 | 亚洲精品va在线观看| 日本不卡一二区| 国产精品视频一二| 中文字幕免费高清| 久久免费电影网| 女~淫辱の触手3d动漫| 91免费在线视频观看| 日本77777| 极品销魂美女一区二区三区| 亚洲这里只有精品| 久久综合五月| 黄色免费网址大全| 日本aⅴ亚洲精品中文乱码| 久热免费在线观看| 三级久久三级久久| 五月婷婷狠狠操| 久久成人免费网| 亚洲一区精品视频在线观看| 久久成人av少妇免费| 成年人三级黄色片| 激情久久五月天| 国产伦理在线观看| eeuss影院一区二区三区| 亚洲区 欧美区| 国产 日韩 欧美大片| 男女一区二区三区| 成人小视频免费在线观看| 水蜜桃av无码| 久久九九99视频| 国产免费一区二区三区网站免费| 成人av网站在线观看| 老女人性生活视频| 成人小视频免费在线观看| 中文字幕乱码在线| xf在线a精品一区二区视频网站| 国精产品一区一区三区免费视频| 国产三级精品三级| 国产日韩精品中文字无码| 亚洲色欲色欲www| 国产黄色片视频| 日本高清视频一区二区| 91一区二区视频| 精品国产1区二区| 国产黄色高清视频| 亚洲精品99久久久久| 国产鲁鲁视频在线观看免费| 国产亚洲一区二区精品| 成人亚洲综合天堂| 久久99久久99精品中文字幕| 免费高潮视频95在线观看网站| 日韩美女写真福利在线观看| 草草视频在线| 成人在线国产精品| 久久久免费毛片| 亚洲欧洲免费无码| 狠狠综合久久| 99热这里只有精品在线播放| 国产成a人亚洲精品| 天天躁日日躁aaaa视频| 成人免费小视频| 国产免费观看av| 欧美三级一区二区| 老司机午夜福利视频| 亚洲男人天堂久| 久久久久久久久免费视频| 久久综合伊人77777| 成年网站在线视频网站| 国产精品大片wwwwww| av日韩精品| 中日韩在线视频| 美女精品在线观看| 三级av免费看| 国产欧美一区二区精品性色 | 国产精品美女免费| 国产精品毛片av| 欧美日韩视频免费在线观看| 欧美成人首页| www.色欧美| 91一区在线观看| 久久久一二三区| 欧美一区三区二区| 天天综合天天综合| 欧美日韩高清在线观看| 成人午夜在线| 久久久久网址| 亚洲黑丝一区二区| 三上悠亚 电影| 18成人在线观看| 中文字幕在线观看欧美| 国产午夜精品久久久| 亚洲第一图区| 91午夜理伦私人影院| 欧美日中文字幕| 日韩一级免费在线观看| 不卡av电影在线播放| 国产真实夫妇交换视频| 正在播放一区二区| 久久99精品久久| 日韩av免费在线看| 久久精品国产亚洲5555| 六月婷婷激情综合| 国产一区二区三区免费看| 黄色av免费播放| 欧美体内she精视频| 国产三级在线| 国产国产精品人在线视| 久久av资源| av免费观看国产| av午夜精品一区二区三区| 九九在线观看视频| 欧美草草影院在线视频| 天堂资源在线中文| 成人精品网站在线观看| 99久久激情| 亚洲国产欧美91| 亚洲男女一区二区三区| 国产黄色大片网站| 欧美激情欧美狂野欧美精品| 日韩一区网站| 男人c女人视频| a级精品国产片在线观看| 国产在线观看黄色| 国产亚洲一区二区在线| 男人天堂久久| 91传媒免费视频| 99视频精品免费视频| 天堂中文在线网| 亚洲人成网站999久久久综合| 亚洲高清黄色| 色撸撸在线观看| 激情久久五月天| 日本少妇激情舌吻| 亚洲男人第一网站| 四虎精品在线观看| 国产一线二线三线女| 国产高清精品网站| 久久狠狠高潮亚洲精品| 亚洲精品久久久久中文字幕二区| av资源一区| 日韩高清国产精品| 激情小说亚洲一区| 国产一级特黄aaa大片| 亚洲色图av在线| 国产成+人+综合+亚洲欧美| 最近中文字幕免费mv| 国产一区亚洲一区| 国语对白一区二区| 亚洲精品v欧美精品v日韩精品| 日本另类视频| 欧美一级爱爱视频| 久久久久久9999| 99久久久国产精品无码网爆 | 日韩成人在线资源| 免费高清不卡av| 九九视频在线观看| 精品亚洲一区二区| 欧美暴力调教| 欧美一级免费播放| 91丨九色丨尤物| 99热这里只有精品99| 国产精品狠色婷| 色乱码一区二区三区网站| 日本五十肥熟交尾|