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()之前,先用不同的值調(diào)用一次setText().

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

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

          評論

          # re: 發(fā)現(xiàn)SWT的Label里的一個Bug 2007-02-24 02:32 BeanSoft

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

          # re: 發(fā)現(xiàn)SWT的Label里的一個Bug 2007-02-24 02:52 喜來樂哈哈

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

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

          導航

          統(tǒng)計

          公告

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

          留言簿(9)

          隨筆分類(68)

          隨筆檔案(80)

          文章分類(1)

          My Open Source Projects

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 柞水县| 盱眙县| 巫溪县| 阿拉善左旗| 额敏县| 措美县| 齐河县| 阜新市| 德格县| 花莲县| 翼城县| 万年县| 潮州市| 新晃| 台安县| 阿拉善左旗| 普宁市| 兴山县| 垦利县| 正蓝旗| 正安县| 神农架林区| 建瓯市| 兴隆县| 琼结县| 来凤县| 宁安市| 周至县| 漠河县| 襄汾县| 阆中市| 阿荣旗| 岳阳县| 博湖县| 榆树市| 砀山县| 绥宁县| 盐边县| 云安县| 富民县| 望都县|