gr8vyguy@Blogjava

          SWT的Label中 的一個小問題

          看下面的代碼
          Label?label?=?new?Label(shell,? SWT.NONE);
          Image?image?
          =?new?Image(display,? "image.gif");
          ???????
          label.setText(
          "text");
          label.setImage(image);
          label.setText(
          "text");

          這個時候label應該顯示什么? 我所期待的是文本text. 然而很遺憾的是label還是顯示image. 為什么會這樣? 看了SWT的源碼我才明白. 下面是Label類里setText方法的一部分,
          ?1?public?void?setText?(String?string)?{
          ?2?????checkWidget?();
          ?3?????if?(string?==?null)?error?(SWT.ERROR_NULL_ARGUMENT);
          ?4?????if?((style?&?SWT.SEPARATOR)?!=?0)?return;
          ?5?????/*
          ?6?????*?Feature?in?Windows.??For?some?reason,?SetWindowText()?for
          ?7?????*?static?controls?redraws?the?control,?even?when?the?text?has
          ?8?????*?has?not?changed.??The?fix?is?to?check?for?this?case?and?do
          ?9?????*?nothing.
          10?????*/
          11?????if?(string.equals?(text))?return;
          12?????text?=?string;
          注意第11行, 當新的string的值和原來的一樣時, 方法setText()直接返回了. 按源碼里注釋的解釋,是為了減少Windows下的重畫事件以提高性能.

          我打算寫這個到Eclipse的bug報告里, 我想這應該算一個bug, 歡迎大家討論.

          當然這種情況不是很常見, 但也不是沒有, 我就碰到了,? 知道了原因后, 解決的方法就很簡單了.
          label.setText("text");
          label.setImage(image);
          label.setText(label.getText()?
          +?"a");
          label.setText(
          "text");
          在setText()之前,先用不同的值調用一次setText().

          另一個可能更好的方法是, Label類提供一個方法改變顯示的模式,比如setShowText(). 但是我沒有找到類似的方法.

          posted on 2007-02-22 21:58 gr8vyguy 閱讀(2579) 評論(2)  編輯  收藏 所屬分類: Java

          評論

          # re: 發現SWT的Label里的一個Bug 2007-02-24 02:32 BeanSoft

          好像 CLabel 就好些...不是太清楚 我也遇到這個問題了, 開始我還以為是 Label 不支持同時顯示文本和圖片.  回復  更多評論   

          # re: 發現SWT的Label里的一個Bug 2007-02-24 02:52 喜來樂哈哈

          Label確實不支持同時顯示文本和圖片  回復  更多評論   

          <2007年2月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728123
          45678910

          導航

          統計

          公告

        1. 轉載請注明出處.
        2. msn: gr8vyguy at live.com
        3. 常用鏈接

          留言簿(9)

          隨筆分類(68)

          隨筆檔案(80)

          文章分類(1)

          My Open Source Projects

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 三原县| 黑水县| 宜宾县| 北辰区| 察雅县| 宜州市| 伊宁市| 临颍县| 拉孜县| 青岛市| 海门市| 双峰县| 云梦县| 漳州市| 方山县| 环江| 九寨沟县| 黔江区| 江陵县| 长宁区| 鄂伦春自治旗| 德令哈市| 湖州市| 紫云| 昌邑市| 永和县| 镇坪县| 浮梁县| 文化| 铜鼓县| 榆中县| 天台县| 镇康县| 彰化市| 开封县| 桑植县| 县级市| 聂拉木县| 玛纳斯县| 富锦市| 大宁县|