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アプリケーションを作成するには、次の手順が必要です.
SFTでよく使われるパッケージ:
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)
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();
}
}