JAVAノート--初探SWT-1



import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.graphics.*;



public class HelloSWT {

	public static void main(String[] args) {
		// TODO Auto-generated constructor stub
		Display display = new Display();// diaplay 
		Shell shell = new Shell(display);//shell 
		shell.setLayout(null);// shell 
		Text hello = new Text(shell ,SWT.MULTI);// 
		shell.setText("Java program");// 
		shell.setSize(200,100);// 
		Color color = new Color(Display.getCurrent(),255,255,255);
		// 
		shell.setBackground(color);// 
		hello.setText("Hello, SWT World!

");// hello.pack();// shell.open();// while(!shell.isDisposed()){ if(!display.readAndDispatch()){ display.sleep(); } } display.dispose(); } }

ここで構築されたのは最初のウィジェットです.
この例のソースコードを分析すると、典型的なSWTアプリケーションを作成するには、次の手順が必要です.
  • Display
  • を作成
  • 1 1つまたは複数のshell
  • を作成する
  • shellのレイアウトを設定
  • shellのコンポーネント
  • を作成する
  • open()メソッドでshellフォーム
  • を開く
  • イベント転送メカニズム
  • を書く
  • display
  • を破棄
    SFTでよく使われるパッケージ:
  • org.eclipse.swt.WidgetsButton Text Label Combo Shell(メインフォーム)Composite(コンポーネントを収容するコンテナ)
  • org.eclipse.swt.layout
  • org.eclipse.swt.CLabelのような基本グラフィックコンポーネントの拡張はLabelの拡張の新しいレイアウト方式StackLayout
  • である.
  • org.eclipse.swt.イベントリスニングクラス対応イベントオブジェクト、例えばMouseListener MouseEvent
  • org.eclipse.swt.graphics画像カーソルフォントまたは図面API
  • org.eclipse.swt.ole.win 32はOLEコンポーネントを呼び出すために使用され、SWTプログラムがIEブラウザまたはWord Excelプログラム
  • を内蔵することができるようにする.
    Buttonコンポーネント
    構築方法:Button(Component parent,int style)
    Componentositeはshellの親styleでbuttonのスタイルを規定しています
    一般的なスタイルスタイル:
    SWT.PUSH
    SWT.CHECK
    SWT.RADIO
    SWT.ARROW
    SWT.CENTER文字中心
    SWT.LEFT文字左揃え
    SWT.RIGHT文字は右側
    SWT.BORDERトラッピング型ボタン
    SWT.FLAT平面型ボタン
    複数のスタイルを'|'で接続できるように指定できます
    一般的な方法setText()setBounds()
    Labelコンポーネント
    構造方法はButtonと似ています
    Label(Composite parent, int style)
    SWT.WRAP自動改行
    SWT.SEPAARATORバー、デフォルト縦線バー
    SWT.HORIZONTAL横線区切り記号
    Label lb1 = new Label(shell,SWT.BORDER|SWT.RIGHT);
    		lb1.setBounds(10,10,70,30);
    		lb1.setText(" 1");
    		lb1.setFont(new Font(display," ",14,SWT.BOLD));
    		lb1.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
    		
    		Label lb2 = new Label(shell,SWT.CENTER);
    		lb2.setBounds(90,10,70,30);
    		lb2.setText(" 2");
    		lb2.setFont(new Font(display," ",14,SWT.NORMAL));
    		
    		Label lb3 = new Label(shell, SWT.SEPARATOR|SWT.BORDER);
    		lb3.setBounds(10,50,70,30);
    		
    		Label lb4 = new Label(shell,SWT.SEPARATOR|SWT.HORIZONTAL|SWT.BORDER);
    		lb4.setBounds(90,50,70,30);

    Textコンポーネント
    SWT.MULTIでは複数行の折り返しを入力できます
    SWT.WRAPでは、複数行の行末の自動改行を入力できます.
    SWT.PASWORDパスワードタイプ入力文字は*と表示されます.
    SWT.V_SCROLLは垂直スクロールバー付き
    SWT.H_SCROLL水平スクロールバー付き
    Text text4 = new Text(shell,SWT.WRAP|SWT.V_SCROLL);
    		text4.setBounds(90,50,70,70);

    ドロップダウンコンボコンポーネント
    style
    SWT.NONEデフォルト仕様
    SWT.READ_ONLY読み取り専用
    SWT.SIMPLEはドロップダウンリストをクリックせずに表示されます
    Comboの一般的な方法
    add(String string)Comboに1つ追加
    add(String string,int index)Comboのindex番目の項目の後に1つ挿入
    deselectAll()Comboのすべてのオプションを空にします
    removeAll()Comboのすべてのオプションを空にします
    setItems(String[]items)配列内の各項目をComboに順次追加
    select(int index)Comboのindex+1番目のアイテムを現在のオプションに設定
    bt1.addSelectionListener(new SelectionAdapter(){
    			public void widgetSelected(SelectionEvent e){
    				combo.removeAll();
    				Scanner input = new Scanner(System.in);
    				for(int i=1;i<=3;i++){
    					String string = input.nextLine();
    					combo.add(string);
    				}
    				input.close();
    				combo.select(0);
    			}
    		});
    		
    Button bt2 = new Button(shell,SWT.NONE);
    bt2.setBounds(130,60,100,25);
    bt2.setText(" ");
    bt2.addSelectionListener(new SelectionAdapter(){
            public void widgetSelected(SelectionEvent e){
    		lb.setText(" "+combo.getText());
    	}
    });

    上のaddSelectionListenerメソッドが特殊に入力されているように見えるパラメータは、大きな列であり、関数も定義されています.
    Listリストボックスコンポーネント
    SWT.MULTI許可チェック
    SWT.SINGLEでラジオを許可
    (Comboは1つのみ選択可能であり、ListにはgetText()メソッドはなく、Listの値はgetSelection()メソッドで、すべてのオプションからなるString配列を返す)
    コードおよび実行効果はComboと似ています
    メニューMenuクラスMenuはメニューバーであり、メニュー項目を収容できるコンテナでもある(MenuItem)
  • Menuの仕様
  • SWT.BARメニューバーメインメニュー用
    SWT.DROP_DOWNドロップダウンメニューサブメニュー用
    SWT.POP_UPマウス右クリックポップアップメニュー
    2.MenuItemの仕様
    SWT.CASCADEにはサブメニューのメニュー項目があります
    SWT.CHECKを選択すると前面に小さなチェックが表示されます
    SWT.PUSH普通型メニュー
    SWT.RADIOを選択すると、前に丸い点があります.
    SWT.SEPARATORセパレータ
    3.メニュー作成の一般手順
    1)まずメニューバーを作成するにはSWTが必要である.BAR属性
    Menu mainmenu = new Menu(shell,SWT.BAR);

    2)フォームに表示するメニューバーを指定する
    shell.setMenuBar(mainMenu);

    3)トップメニューバーを作成するにはSWTが必要である.CASCADEプロパティ
    MenuItem fileItem = new MenuItem(mainMenu,SWT.CASCADE);
    fileItem.setText(" &F");

    4)トップメニュー項目に関するプルダウンメニューの作成
    Menu fileMenu = new Menu(shell,SWT.DROP_DOWN);

    5)トップメニューをドロップダウンメニューに関連付ける
    fileItem.setMenu(fileMenu);

    2レベルメニューの作成は、上記の手順3を繰り返すだけです)--5)
    このメニューで作成するすべてのmenuオブジェクトの最初のパラメータはshellです.
    MenuItemオブジェクトを作成する最初のパラメータは、MenuItemが存在するMenuオブジェクトです.
    MenuがMenuItemのサブメニューである場合、関連付けMenuItemも作成する.setMenu(Menu)
    次のコードは以前より複雑です.
    import org.eclipse.swt.*;
    import org.eclipse.swt.widgets.*;
    import org.eclipse.swt.widgets.Menu;
    import org.eclipse.swt.widgets.MenuItem;
    import org.eclipse.swt.events.*;
    
    public class HelloSWT {
    	private static Label lb;
    	
    	public static void main(String[] args) {
    		Display display = new Display();
    		final Shell shell = new Shell(display);
    		shell.setText(" ");
    		
    		Menu mainMenu = new Menu(shell,SWT.BAR);
    		shell.setMenuBar(mainMenu);
    		
    		MenuItem fileItem = new MenuItem(mainMenu,SWT.CASCADE);
    		fileItem.setText(" &F");
    		
    		Menu fileMenu = new Menu(shell,SWT.DROP_DOWN);
    		fileItem.setMenu(fileMenu);{
    			MenuItem newFileItem = new MenuItem(fileMenu,SWT.CASCADE);
    			newFileItem.setText(" &N");
    			
    			Menu newFileMenu = new Menu(shell,SWT.DROP_DOWN);
    			newFileItem.setMenu(newFileMenu);
    			{
    				MenuItem newProjectItem = new MenuItem(newFileMenu,SWT.PUSH);
    				newProjectItem.setText(" \tCtrl+Shift+N");
    				newProjectItem.setAccelerator(SWT.CTRL+SWT.SHIFT+'N');
    				newProjectItem.addSelectionListener(new SelectionAdapter(){
    					public void widgetSelected(SelectionEvent e){
    						Text text = new Text(shell,SWT.MULTI|SWT.BORDER|SWT.WRAP);
    						text.setBounds(10,10,100,30);
    						text.setText(" “ ”");
    					}
    				});
    				new MenuItem(newFileMenu,SWT.SEPARATOR);
    				new MenuItem(newFileMenu,SWT.PUSH).setText(" ");
    				new MenuItem(newFileMenu,SWT.PUSH).setText(" ");
    			}
    			MenuItem openFileItem = new MenuItem(fileMenu,SWT.CASCADE);
    			openFileItem.setText(" &O");
    			MenuItem exitItem = new MenuItem(fileMenu,SWT.CASCADE);
    			exitItem.setText(" &E");
    		}
    		
    		MenuItem helpItem = new MenuItem(mainMenu,SWT.CASCADE);
    		helpItem.setText(" &H");
    		
    		shell.pack();
    		shell.open();
    		while(!shell.isDisposed()){
    			if(!display.readAndDispatch()){
    				display.sleep();
    			}
    		}
    		display.dispose();
    	}
    }