<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    TWaver - 專注UI技術(shù)

    http://twaver.servasoft.com/
    posts - 171, comments - 191, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    讓JTextField添加“自動完成”功能 一文中收到了許多user 的反饋,其中有user提到需要能夠在下拉列表中同時顯示文字和圖片。要實現(xiàn)下拉列表的這種功能,不用太難,給ComboBox設(shè)置一個Renderer 即可,ComboBox的Renderer默認是一個JLabel,而JLabel 本身就有設(shè)置Icon的功能,所以直接用默認的Renderer,并設(shè)置上圖片即可,代碼如下:
     1 cbInput.setRenderer(new DefaultListCellRenderer(){
     2     public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
     3         super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
     4         if(value != null){
     5             this.setText(value.toString());
     6             String url = value.toString().replaceAll(" ", "_") + ".png";
     7             ImageIcon icon = getImageIcon(url, IMAGE_ICON_CACHE);
     8             if(icon != null){
     9                 this.setIcon(icon);
    10             }
    11         }
    12         return this;
    13     }
    14 });

    在上面的代碼中,通過文字去查找對應(yīng)的圖片,并設(shè)置Renderer 的Icon,其中g(shù)etImageIcon方法如下,緩存了圖片資源,這樣不用每次刷新的時候去每次生成ImageIcon:
     1 public static ImageIcon getImageIcon(String url,Map IMAGE_ICON_CACHE) {
     2         if (url == null) {
     3             return null;
     4         }
     5         if (IMAGE_ICON_CACHE.get(url) == null) {
     6             ImageIcon image = null;
     7             InputStream in =ResourceAgent.class.getResourceAsStream(url);
     8             if (in != null) {
     9                 try {
    10                     byte buffer[] = new byte[in.available()];
    11                     for (int i = 0, n = in.available(); i < n; i++) {
    12                         buffer[i] = (bytein.read();
    13                     }
    14                     Toolkit toolkit = Toolkit.getDefaultToolkit();
    15                     Image img = toolkit.createImage(buffer);
    16                     image = new ImageIcon(img);
    17                     in.close();
    18                 } catch (IOException ex) {
    19                     ex.printStackTrace();
    20                     return null;
    21                 }
    22             }
    23             if (image == null) {
    24                 if (ClassLoader.getSystemResource(url) != null) {
    25                     image = new ImageIcon(ClassLoader.getSystemResource(url));
    26                 } else {
    27                     image = new ImageIcon(url);
    28                 }
    29             }
    30             if (image == null) {
    31                 System.err.println("can't load image '" + url + "'");
    32             } else {
    33                 IMAGE_ICON_CACHE.put(url, image);
    34             }
    35         }
    36         return (ImageIcon) IMAGE_ICON_CACHE.get(url);
    37     }
    38 
    效果如下:

    全部代碼: Source Code

    評論

    # re: 讓JTextField添加“自動完成”功能(續(xù))  回復(fù)  更多評論   

    2013-07-25 15:52 by 研究報告
    這篇文章好簡短 不過還不錯

    # re: 讓JTextField添加“自動完成”功能(續(xù))  回復(fù)  更多評論   

    2013-07-26 17:36 by 行業(yè)報告
    博主好文 講的很不錯 謝謝博主分享

    # re: 讓JTextField添加“自動完成”功能(續(xù))  回復(fù)  更多評論   

    2013-12-30 10:25 by 渣漿泵
    要實現(xiàn)下拉列表的這種功能,不用太難,給ComboBox設(shè)置一個Renderer 即可

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 中国xxxxx高清免费看视频| 亚洲熟妇无码AV| 国产JIZZ中国JIZZ免费看| 妞干网免费观看视频| 亚洲AV无码久久久久网站蜜桃| 国产电影午夜成年免费视频| 亚洲图片中文字幕| 好大好硬好爽免费视频| 国产精品亚洲专区无码牛牛| 免费国产成人午夜私人影视| 曰韩无码AV片免费播放不卡| 亚洲欧洲无码AV电影在线观看| a毛片全部播放免费视频完整18| 亚洲国产老鸭窝一区二区三区| 99精品免费观看| 亚洲人成人77777网站不卡| 黄网址在线永久免费观看| 免费人妻精品一区二区三区| 国产亚洲人成网站在线观看| 久久99精品视免费看| 最新亚洲春色Av无码专区| 伊在人亚洲香蕉精品区麻豆| 中文字幕无码免费久久| 亚洲理论片中文字幕电影| 四虎成人精品一区二区免费网站| 免费一区二区无码视频在线播放| 亚洲国产精品一区二区成人片国内 | 亚洲∧v久久久无码精品| 国产成人免费午夜在线观看| 亚洲av色香蕉一区二区三区蜜桃| 精品亚洲成α人无码成α在线观看 | 最近免费中文字幕大全免费 | 亚洲成av人片天堂网| av大片在线无码免费| 亚洲国产成人AV网站| 久久亚洲国产视频| 国产免费人人看大香伊| 日本免费污片中国特一级| 亚洲av综合av一区二区三区| 亚洲V无码一区二区三区四区观看| 最近高清国语中文在线观看免费|