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 閱讀(2575) 評論(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. 轉(zhuǎn)載請注明出處.
        2. msn: gr8vyguy at live.com
        3. 常用鏈接

          留言簿(9)

          隨筆分類(68)

          隨筆檔案(80)

          文章分類(1)

          My Open Source Projects

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 嘉定区| 合水县| 儋州市| 千阳县| 黄浦区| 淳安县| 栖霞市| 湖南省| 涡阳县| 高碑店市| 南宫市| 富平县| 天峨县| 樟树市| 军事| 海南省| 承德县| 郸城县| 丁青县| 铁力市| 武宣县| 乌苏市| 东阳市| 青阳县| 治县。| 临湘市| 同德县| 图片| 新蔡县| 白银市| 轮台县| 中宁县| 会泽县| 遵义县| 陆丰市| 海阳市| 通化市| 眉山市| 怀宁县| 平利县| 宁乡县|