Swing


          天行健 君子以自強(qiáng)不息

          posts - 69, comments - 215, trackbacks - 0, articles - 16
             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Swing DayDayUp之六: QQ風(fēng)格JTextField

          Posted on 2010-02-09 12:06 zht 閱讀(3759) 評論(3)  編輯  收藏 所屬分類: Swing

          對比圖:

          效果圖:




          昨天是相當(dāng)?shù)挠魫灒瑢懗绦虬l(fā)泄下,搞了一個qq風(fēng)格的JTextField,如上圖所示
          關(guān)鍵知識點(diǎn)
          1:
          圓角效果
              (1)通過setClip設(shè)置剪切區(qū)域,只繪制圓角區(qū)域
                      RoundRectangle2D.Double rect = new RoundRectangle2D.Double(0, 0, this.getWidth(), this.getHeight(), 20, 20);
                      g.setClip(rect);
                      注意要在super之前設(shè)置
              (2)重載paintBorder方法繪制圓角邊框
                      RoundRectangle2D.Double rect = new RoundRectangle2D.Double(1, 1, this.getWidth() - 2, this.getHeight() - 2, 20, 20);
                        g2d.setColor(new Color(0, 100, 100));
                        g2d.draw(rect);
          2:
          查詢圖標(biāo)
              (1)重載getInsets方法設(shè)置間隙
              (2)重載paintComponent繪制圖片和三角箭頭
          3:
          鼠標(biāo)及事件觸發(fā)
              (1)光標(biāo):添加addMouseMotionListener事件,在mouseMove中設(shè)置光標(biāo)
                  if (getIconBounds().contains(e.getPoint())) {
                       SearchTextField.this.setCursor(Cursor.getDefaultCursor());
                  } else {
                       SearchTextField.this.setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
                  }
              (2)鼠標(biāo)點(diǎn)擊search圖標(biāo)事件:添加addMouseListener事件,在mouseClick中彈出菜單或做其它處理
                  if (getIconBounds().contains(e.getPoint())) {
                          JPopupMenu menu = new ZHTPopupMenu("menu");
                          for (int i = 1; i < 6; i++) {
                          JCheckBoxMenuItem item = new JCheckBoxMenuItem("item" + i);
                          menu.add(item);
                      }
                      menu.show(SearchTextField.this, getWidth() - 5, getHeight() - 2);
                  }

          by
                   zhangtao

                   zht_dream@hotmail.com
          主站蜘蛛池模板: 界首市| 揭西县| 玉树县| 天等县| 竹溪县| 鄂州市| 沧州市| 馆陶县| 山丹县| 洞口县| 额尔古纳市| 剑河县| 定襄县| 杂多县| 延寿县| 嫩江县| 阿鲁科尔沁旗| 迭部县| 平谷区| 阳高县| 客服| 阿拉尔市| 依兰县| 泗水县| 马鞍山市| 安陆市| 吉林省| 黔西| 凤山县| 庐江县| 蒙阴县| 威海市| 盐山县| 峨眉山市| 贵溪市| 湖南省| 湟中县| 泰顺县| 永州市| 郁南县| 华池县|