`

最简单的文本编辑器 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();把这个注释掉
}

相关推荐

    Java桌面程序SWT记事本小例子

    可以设置其多行属性(SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL),以便用户能滚动查看和编辑大量文本。 ```java Text textArea = new Text(shell, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); textArea.setBounds...

    SWT使用例子

    通过这些例子,开发者可以学习到如何有效地使用SWT来构建功能丰富的图形用户界面,并理解SWT组件间的交互机制。 总的来说,"SWT使用例子"这个主题旨在帮助开发者掌握SWT的基础知识,通过实践加深对GUI编程的理解,...

    eclipse插件开发form编辑器

    然而,传统的视图和编辑器组件在某些情况下可能不再是最优解,因此Eclipse Forms应运而生。 **设计理念** - **问题解决**:Eclipse Forms旨在解决一个长期存在于Eclipse SDK中的问题——即PDE(Plug-in ...

    SWT/JFace开发入门指南

    - **Hello World 示例**: 最基础的应用程序,展示了如何使用 SWt 创建一个带有简单文本的窗口。 - **登录界面**: 实现了一个具有用户名和密码输入框的登录界面,包含了按钮点击事件的处理。 - **表格数据展示**: ...

    Java程序设计之swt教程

    3. 编写GUI组件和布局:通过使用SWT提供的各种控件和布局管理器来创建用户界面,这些控件可能包括按钮、文本框、列表等。 4. 事件处理:SWT采用事件驱动模型,对用户的交互行为(如点击按钮、输入文本等)进行响应,...

    SWT 编 程 总 结

    SWT提供了多种布局管理器来帮助开发者自动管理控件的位置和大小。 ##### 8.1 FillLayout - **风格**:可以指定水平或垂直填充。 - **实例**:创建一个Shell,然后使用FillLayout将其填满整个窗口。 ##### 8.2 ...

    MyEclipse图形界面开发Swing_SWT

    最简单的Applet程序通常从实现`Applet`类或`JApplet`类开始,重写`paint()`方法来绘制基本图形。例如,一个简单的“Hello World”Applet可能只包含几行代码来显示一段文本。 - **Applet的运行方式** Applet通过...

    eclipse RCP开发一个简单的MYSQL客户端工具介绍

    这通常涉及到一个文本编辑器,支持语法高亮、自动完成等功能。我们可以利用Eclipse的SourceViewer类来实现这个功能。同时,为了显示查询结果,我们可以创建一个表格视图,展示数据行和列。 在处理查询结果时,我们...

    Java运用SWT插件编写桌面记事本应用程序

    例如,新建操作可能需要清空当前文本,打开操作需要弹出文件选择对话框并读取文件内容,保存和另存为操作需要写入文件,编辑菜单中的撤销、剪切、复制、粘贴、删除、查找和替换等需要对应的功能实现。 6. **辅助类*...

    Eclipse RCP.pdf清晰版

    - **Editor(编辑器)**: 主要用于处理文本和其他类型的文件。 - **View(视图)**: 提供额外的信息和控制,如Outline视图展示文档结构。 - **Page(页面)**: 包含一组特定的视图和编辑器,代表用户当前的工作环境...

    rcp入门程序

    以创建一个简单的文本编辑器为例,我们可以按照以下步骤进行: 1. **初始化项目**:创建一个新的RCP项目,并添加必要的插件依赖。 2. **设计用户界面**:定义菜单、工具栏以及编辑器区域。 3. **实现功能**:实现...

    JFace-viewer

    通过这些编辑器,用户可以直接在视图中修改数据。 **7. 事件处理** JFace Viewer提供了丰富的事件接口,如SelectionChangedListener、DoubleClickListener等,使得开发者可以轻松监听并响应用户的交互行为。 **8. ...

    eclipse插件开发指南(解密).pdf

    这种灵活性使得Eclipse能够适应各种应用场景,无论是简单的文本编辑,还是复杂的应用程序开发,都能得心应手。 #### 先进的UI框架与组件 为了实现高性能的图形用户界面,Eclipse采用了SWT和JFace两大框架。SWT...

    Eclipse 开源项目 mywork 源代码

    2. **MyWork-freenote**: 这个模块可能是一个便签或日记应用,用户可以创建、编辑和管理文本笔记。它体现了Eclipse对桌面应用的支持,可能使用了SWT(Standard Widget Toolkit)和JFace等Eclipse GUI库。 3. **...

    .GTK+程序设计中文版

    - **定义与起源**:GTK+(GIMP Tool Kit)是一种跨平台的图形用户界面工具包,最初是为支持GIMP(GNU Image Manipulation Program)图像编辑器而开发。随着时间的发展,GTK+已成为Linux和BSD Unix操作系统中最受欢迎...

    Qt学习之路.pdf

    组件布局涉及如何在界面上安排控件,Qt提供了丰富的布局管理器,如QVBoxLayout、QHBoxLayout等,用于实现响应式和美观的用户界面设计。信号槽机制则是Qt的事件处理方式,它允许对象之间以一种类型安全的方式通信,...

    Eclipse插件开发之入门

    在该类中实现 `createPartControl` 方法以初始化界面元素,如添加一个简单的文本标签显示 “Hello World”。 #### 三、重要概念与技术要点 1. **插件概念**:插件是 Eclipse 的扩展单元,能够为 Eclipse 添加新的...

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

Global site tag (gtag.js) - Google Analytics