`

最简单的文本编辑器 SWT组件

阅读更多

[b][b]写的这个在eclipse下面Run,结果怎么弹不出来,就闪一下然后什么都没有,请大牛指教一二,感激不尽!!!
[/b]
package com.test.control;
import java.io.*;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.widgets.*;

public class TestEditor extends SelectionAdapter {

private Shell shell ;
private Text textarea ;
private String filename ;

public TestEditor(){

Display display = new Display() ;
shell = new Shell(display) ;
shell.setText("java文本编辑器") ;
shell.setBounds(10, 10, 600, 400) ;

//建立文件菜单
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") ;
newFileItem.addSelectionListener(this) ;

MenuItem openFileItem = new MenuItem(fileMenu,SWT.CASCADE) ;
openFileItem.setText("打开&O") ;
openFileItem.addSelectionListener(this) ;

MenuItem saveFileItem = new MenuItem(fileMenu,SWT.CASCADE) ;
saveFileItem.setText("保存&S") ;
saveFileItem.addSelectionListener(this) ;

MenuItem saveAsFileItem = new MenuItem(fileMenu,SWT.CASCADE) ;
saveAsFileItem.setText("另存为...") ;
saveAsFileItem.addSelectionListener(this) ;

new MenuItem(fileMenu,SWT.SEPARATOR) ;

MenuItem exitItem = new MenuItem(fileMenu,SWT.CASCADE) ;
exitItem.setText("退出&E") ;
exitItem.addSelectionListener(this) ;

//帮助菜单
MenuItem helpItem = new MenuItem(mainMenu,SWT.CASCADE) ;
helpItem.setText("帮助&H") ;
Menu helpMenu = new Menu(shell,SWT.DROP_DOWN) ;
helpItem.setMenu(helpMenu) ;

MenuItem aboutItem = new MenuItem(helpMenu,SWT.CASCADE) ;
aboutItem.setText("关于&A") ;
aboutItem.addSelectionListener(this) ;

//编辑区域
textarea = new Text(shell,SWT.NONE|SWT.BORDER) ;
textarea.setBounds(1,1,600,400) ;

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

}

//菜单选择事件
public void widgetSelected(SelectionEvent e){

try{

if(e.getSource().toString().indexOf("新建") != -1){
textarea.setText("") ;
}
else if(e.getSource().toString().indexOf("打开") != -1){
//选择文件
FileDialog dialog1 = new FileDialog(shell,SWT.OPEN) ;
filename = dialog1.open() ;  //全路径
//读取
FileReader fr = new FileReader(filename) ;
BufferedReader br = new BufferedReader(fr) ;
String str = "" ;
while(br.ready()){
int c = br.read() ;
str += (char) c ;
}
textarea.setText(str) ;
br.close() ;
fr.close() ;
shell.setText("Java文本编辑器-" + filename) ;
}
else if(e.getSource().toString().indexOf("保存") != -1){
//写入文件
File file = new File(filename) ;
FileWriter fos = new FileWriter(file,true) ;
BufferedWriter bos = new BufferedWriter(fos) ;
PrintWriter pos = new PrintWriter(bos) ;
//写入对象数据
pos.print(textarea.getText()) ;

bos.close() ;
pos.close() ;
fos.close() ;
}
else if(e.getSource().toString().indexOf("另存为...") != -1){
//选择文件
FileDialog dialog2 = new FileDialog(shell,SWT.OPEN) ;
String fileName = dialog2.open() ;

//写入文件
File file = new File(fileName) ;
FileWriter fos = new FileWriter(file,true) ;
BufferedWriter bos = new BufferedWriter(fos) ;
PrintWriter pos = new PrintWriter(bos) ;

//写入对象数据
pos.write(textarea.getText()) ;

bos.close() ;
pos.close() ;
fos.close() ;
}
else if(e.getSource().toString().indexOf("退出") != -1)
System.exit(0) ;
else if(e.getSource().toString().indexOf("关于") != -1){
//显示对话框
MessageBox mb = new MessageBox(shell,SWT.ICON_WARNING) ;
mb.setMessage("文本编辑器") ;
mb.setText("关于") ;
mb.open() ;
}

}catch(FileNotFoundException ex){

}catch(IOException ev){

}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
new TestEditor() ;
}

}
[/b]
0
0
分享到:
评论
1 楼 tianmo2008 2010-11-14  
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()){
display.sleep();
}
//display.dispose();把这个注释掉
}

相关推荐

Global site tag (gtag.js) - Google Analytics