DANCE WITH JAVA

          開發出高質量的系統

          常用鏈接

          統計

          積分與排名

          好友之家

          最新評論

          Jface的Hello world引出的問題

          Jface的hello World網上到處都是,但簡單的Hello world能引出很多需要注意的問題.
          首先大部分網上的jface helloworld如下:
          import org.eclipse.jface.window.ApplicationWindow;
          import org.eclipse.swt.SWT;
          import org.eclipse.swt.graphics.Point;
          import org.eclipse.swt.widgets.Composite;
          import org.eclipse.swt.widgets.Control;
          import org.eclipse.swt.widgets.Display;
          import org.eclipse.swt.widgets.Text;


          public class TestWindow extends ApplicationWindow {

              
          public TestWindow() {
                  
          super(null);
              }

              
          protected Control createContents(Composite parent) {
                  Text text 
          = new Text(parent,SWT.NONE);
                  text.setText(
          "hello world");
                  
          return parent;
              }

              
          public static void main(String args[]) {
                  
          try {
                      TestWindow window 
          = new TestWindow();
                      window.setBlockOnOpen(
          true);
                      window.open();
                      Display.getCurrent().dispose();
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

              }

          }


          這個代碼是可以運行的,而且運行的結果也看不出什么問題。但看不出來并不代表沒有問題。下邊我們來讓問題顯現
          在createContents()函數中再加入一個Text代碼變成
          import org.eclipse.jface.window.ApplicationWindow;
          import org.eclipse.swt.SWT;
          import org.eclipse.swt.widgets.Composite;
          import org.eclipse.swt.widgets.Control;
          import org.eclipse.swt.widgets.Display;
          import org.eclipse.swt.widgets.Text;


          public class TestWindow extends ApplicationWindow {

              
          public TestWindow() {
                  
          super(null);
              }

              
          protected Control createContents(Composite parent) {
                  Text text 
          = new Text(parent,SWT.NONE);
                  text.setText(
          "hello world");
                  Text text1 
          = new Text(parent,SWT.NONE);
                  text1.setText(
          "it's me");
                  
          return parent;
              }

              
          public static void main(String args[]) {
                  
          try {
                      TestWindow window 
          = new TestWindow();
                      window.setBlockOnOpen(
          true);
                      window.open();
                      Display.getCurrent().dispose();
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

              }

          }

          運行,并沒有看到第二個Text,為什么?
          是否沒有設置text的Bounds?好設置一下
          import org.eclipse.jface.window.ApplicationWindow;
          import org.eclipse.swt.SWT;
          import org.eclipse.swt.graphics.Point;
          import org.eclipse.swt.widgets.Composite;
          import org.eclipse.swt.widgets.Control;
          import org.eclipse.swt.widgets.Display;
          import org.eclipse.swt.widgets.Text;


          public class TestWindow extends ApplicationWindow {

              
          public TestWindow() {
                  
          super(null);
              }

              
          protected Control createContents(Composite parent) {

                  Text text 
          = new Text(parent, SWT.BORDER);
                  text.setText(
          "hello world");
                  text.setBounds(
          591128025);
                  
                  Text text_1 
          = new Text(parent, SWT.BORDER);
                  text_1.setText(
          "it's me");
                  text_1.setBounds(
          722218025);
                  
          return parent;
              }

              
          public static void main(String args[]) {
                  
          try {
                      TestWindow window 
          = new TestWindow();
                      window.setBlockOnOpen(
          true);
                      window.open();
                      Display.getCurrent().dispose();
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

              }

              
          private void createActions() {
              }

          }

          效果依舊,那是為什么呢?
          這是因為在createContents()方法中直接使用了參數中的parent,造成了布局(layout)的混亂,在只有一個的text的情況下看不出來,現在就看出來了。
          解決辦法:再構造一個composite,在我們平時使用的時候記得一定要構造一個自己的composite,設置自己的布局,不要直接使用參數中的composite
          import org.eclipse.jface.window.ApplicationWindow;
          import org.eclipse.swt.SWT;
          import org.eclipse.swt.widgets.Composite;
          import org.eclipse.swt.widgets.Control;
          import org.eclipse.swt.widgets.Display;
          import org.eclipse.swt.widgets.Text;


          public class TestWindow extends ApplicationWindow {

              
          public TestWindow() {
                  
          super(null);
              }

              
          protected Control createContents(Composite parent) {
                  Composite container 
          = new Composite(parent, SWT.NONE);

                  Text text 
          = new Text(container, SWT.BORDER);
                  text.setText(
          "hello world");
                  text.setBounds(
          591128025);
                  
                  Text text_1 
          = new Text(container, SWT.BORDER);
                  text_1.setText(
          "it's me");
                  text_1.setBounds(
          722218025);
                  
          return container;
              }

              
          public static void main(String args[]) {
                  
          try {
                      TestWindow window 
          = new TestWindow();
                      window.setBlockOnOpen(
          true);
                      window.open();
                      Display.getCurrent().dispose();
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }

              }

              
          private void createActions() {
              }

          }


          posted on 2007-08-07 09:10 dreamstone 閱讀(1415) 評論(0)  編輯  收藏 所屬分類: SWT和插件開發

          主站蜘蛛池模板: 隆林| 龙口市| 祁阳县| 乐至县| 东源县| 崇礼县| 积石山| 黄石市| 雅江县| 阿拉尔市| 遂宁市| 城市| 衢州市| 尤溪县| 文成县| 遂川县| 固始县| 平阴县| 岢岚县| 河北区| 麻江县| 红原县| 霍山县| 芷江| 南雄市| 定襄县| 达州市| 胶南市| 华坪县| 通州市| 大姚县| 巴林左旗| 邵阳县| 西乌| 嫩江县| 南安市| 三明市| 资源县| 巧家县| 大关县| 当雄县|