swt简易记事本
1.简易记事本1package my.test.swt;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import org.eclipse.swt.SWT;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.events.SelectionListener;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.FileDialog;import org.eclipse.swt.widgets.MessageBox;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Text;public class FirstSwt {private static Display display;private static Shell shell;private static Text text;private static String fn = "";/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubdisplay = new Display();shell = new Shell(display, SWT.DIALOG_TRIM);Image imge = new Image(display.getCurrent(), "icons/calendar_edit.png");shell.setImage(imge);shell.setText("记事本");shell.setSize(500, 400);Button newButton = new Button(shell, SWT.PUSH);newButton.setLocation(2, 5);newButton.setSize(50, 20);newButton.setText("新建");/** * xi */newButton.addSelectionListener(new SelectionListener() {@Overridepublic void widgetSelected(SelectionEvent e) {// TODO Auto-generated method stubfn = "";shell.setText("新建文件");text.setText("<--请输入您要输入的文字-->");}@Overridepublic void widgetDefaultSelected(SelectionEvent e) {// TODO Auto-generated method stub}});Button openButton = new Button(shell, SWT.PUSH);openButton.setLocation(60, 5);openButton.setSize(50, 20);openButton.setText("打开");openButton.addSelectionListener(new SelectionListener() {@Overridepublic void widgetSelected(SelectionEvent e) {// TODO Auto-generated method stubFileDialog fdl = new FileDialog(shell, SWT.OPEN);String fileName = fdl.open();try {if (fileName != null) {// 打开指定的文件FileInputStream fis = new FileInputStream(fileName);text.setText("");BufferedReader in = new BufferedReader(new InputStreamReader(fis));String s = null;// 将指定的文件一行一行地加到文本框中while ((s = in.readLine()) != null) {text.append(s + "\r\n");}}if (fileName != null) {fn = fileName;shell.setText(fn);MessageBox successBox = new MessageBox(shell);successBox.setText("信息");successBox.setMessage("打开文件成功!");successBox.open();}} catch (Exception ex) {ex.printStackTrace();MessageBox errorBox = new MessageBox(shell, SWT.ICON_ERROR);errorBox.setText("错误");errorBox.setMessage("打开文件失败!");errorBox.open();}}@Overridepublic void widgetDefaultSelected(SelectionEvent e) {// TODO Auto-generated method stub}});Button saveButton = new Button(shell, SWT.PUSH);saveButton.setLocation(118, 5);saveButton.setSize(50, 20);saveButton.setText("保存");saveButton.addSelectionListener(new SelectionListener() {@Overridepublic void widgetSelected(SelectionEvent e) {// TODO Auto-generated method stubtry {String fileName = "";if (fn.equals("")) {FileDialog dlg = new FileDialog(shell, SWT.SAVE);fileName = dlg.open();if (fileName != null) {fn = fileName;shell.setText(fn);}}if (fn != "") {FileOutputStream fos = new FileOutputStream(fn);OutputStreamWriter out = new OutputStreamWriter(fos);out.write(text.getText());out.close();shell.setText(fn);MessageBox successBox = new MessageBox(shell);successBox.setText("信息");successBox.setMessage("保存文件成功!");successBox.open();}} catch (Exception ex) {ex.printStackTrace();MessageBox errorBox = new MessageBox(shell);errorBox.setText("信息");errorBox.setMessage("保存失败");errorBox.open();}}@Overridepublic void widgetDefaultSelected(SelectionEvent e) {// TODO Auto-generated method stub}});Button myButton = new Button(shell, SWT.PUSH);myButton.setLocation(176, 5);myButton.setSize(50, 20);myButton.setText("清空");myButton.addSelectionListener(new SelectionListener() {@Overridepublic void widgetSelected(SelectionEvent e) {// TODO Auto-generated method stubtext.setText("");}@Overridepublic void widgetDefaultSelected(SelectionEvent e) {// TODO Auto-generated method stub}});text = new Text(shell, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.WRAP);text.setLocation(2, 30);text.setSize(shell.getClientArea().width - 4,shell.getClientArea().height - 35);shell.open();//打开窗口while (!shell.isDisposed()) {if (!display.readAndDispatch())// 如果未发生事件,通过sleep方法进行监视事件队列display.sleep();}display.dispose();//释放底层资源}}2.简易记事本2
package my.test.swt;import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; public class BasicEditor {Display display = new Display(); Shell shell = new Shell(display); StyledText text; boolean hasUnsavedChanges; File file; private String lastOpenDirectory; public static final String APP_NAME = "BasicEditor v1.0"; MenuItem miWrap = null; public BasicEditor() { shell.setLayout(new GridLayout()); ToolBar toolBar = new ToolBar(shell, SWT.FLAT | SWT.RIGHT ); ToolItem tiNew = new ToolItem(toolBar, SWT.PUSH); tiNew.setText("&New"); tiNew.setImage(getImage("calendar_edit.png")); tiNew.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { if(handleChangesBeforeDiscard()) { file = null; text.setText(""); } } }); ToolItem tiOpen = new ToolItem(toolBar, SWT.PUSH); tiOpen.setText("&Open"); tiOpen.setImage(getImage("calendar_edit.png")); tiOpen.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { if(handleChangesBeforeDiscard()) loadTextFromFile(); } }); ToolItem tiSave = new ToolItem(toolBar, SWT.PUSH); tiSave.setText("&Save"); tiSave.setImage(getImage("calendar_edit.png")); tiSave.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { saveTextToFile(); } }); new ToolItem(toolBar, SWT.SEPARATOR); ToolItem tiCopy = new ToolItem(toolBar, SWT.PUSH); tiCopy.setText("&Copy"); tiCopy.setImage(getImage("calendar_edit.png")); tiCopy.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { text.copy(); } }); ToolItem tiCut = new ToolItem(toolBar, SWT.PUSH); tiCut.setText("Cu&t"); tiCut.setImage(getImage("calendar_edit.png")); tiCut.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { text.cut(); } }); ToolItem tiPaste = new ToolItem(toolBar, SWT.PUSH); tiPaste.setText("&Paste"); tiPaste.setImage(getImage("calendar_edit.png")); tiPaste.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { text.paste(); } }); new ToolItem(toolBar, SWT.SEPARATOR); final ToolItem tiWrap = new ToolItem(toolBar, SWT.CHECK); tiWrap.setText("&Wrap"); tiWrap.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { text.setWordWrap(tiWrap.getSelection()); miWrap.setSelection(tiWrap.getSelection()); } }); toolBar.pack(); System.out.println("Client area: " + shell.getClientArea()); text = new StyledText( shell, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); text.setLayoutData(new GridData(GridData.FILL_BOTH)); Font font = new Font(shell.getDisplay(), "Courier New", 10, SWT.NORMAL); text.setFont(font); text.setText("BasicEditor version 1.0\r\nWriten by Jack Li Guojie. "); text.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { hasUnsavedChanges = true; } }); Menu menuBar = new Menu(shell, SWT.BAR); MenuItem fileMenuItem = new MenuItem(menuBar, SWT.CASCADE); fileMenuItem.setText("&File"); Menu fileMenu = new Menu(shell, SWT.DROP_DOWN); MenuItem miNew = new MenuItem(fileMenu, SWT.PUSH); miNew.setText("&New\tCtrl+N"); miNew.setImage(getImage("calendar_edit.png")); miNew.setAccelerator(SWT.CTRL + 'N'); miNew.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { if(handleChangesBeforeDiscard()) { file = null; text.setText(""); } } }); MenuItem miOpen = new MenuItem(fileMenu, SWT.PUSH); miOpen.setText("&Open\tCtrl+O"); miOpen.setAccelerator(SWT.CTRL + 'O'); miOpen.setImage(getImage("calendar_edit.png")); miOpen.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { if(handleChangesBeforeDiscard()) loadTextFromFile(); } }); MenuItem miSave = new MenuItem(fileMenu, SWT.PUSH); miSave.setText("&Save\tCtrl+S"); miSave.setImage(getImage("calendar_edit.png")); miSave.setAccelerator(SWT.CTRL + 'S'); miSave.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { saveTextToFile(); } }); new MenuItem(fileMenu, SWT.SEPARATOR); MenuItem miExit = new MenuItem(fileMenu, SWT.PUSH); miExit.setText("&Exit"); miExit.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { if(handleChangesBeforeDiscard()) shell.dispose(); } }); fileMenuItem.setMenu(fileMenu); MenuItem editMenuItem = new MenuItem(menuBar, SWT.CASCADE); editMenuItem.setText("&Edit"); Menu editMenu = new Menu(shell, SWT.DROP_DOWN); MenuItem miCopy = new MenuItem(editMenu, SWT.PUSH); miCopy.setText("&Copy\tCtrl+C"); miCopy.setImage(getImage("calendar_edit.png")); miCopy.setAccelerator(SWT.CTRL + 'C'); miCopy.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { text.copy(); } }); MenuItem miCut = new MenuItem(editMenu, SWT.PUSH); miCut.setText("Cu&t\tCtrl+X"); miCut.setImage(getImage("calendar_edit.png")); miCut.setAccelerator(SWT.CTRL + 'X'); miCut.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { text.cut(); } }); MenuItem miPaste = new MenuItem(editMenu, SWT.PUSH); miPaste.setText("&Paste\tCtrl+P"); miPaste.setImage(getImage("calendar_edit.png")); miPaste.setAccelerator(SWT.CTRL + 'P'); miPaste.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { text.paste(); } }); editMenuItem.setMenu(editMenu); MenuItem formatMenuItem = new MenuItem(menuBar, SWT.CASCADE); formatMenuItem.setText("&Format"); Menu formatMenu = new Menu(shell, SWT.DROP_DOWN); miWrap = new MenuItem(formatMenu, SWT.CHECK); miWrap.setText("&Wrap\tCtrl+W"); miWrap.setAccelerator(SWT.CTRL + 'W'); miWrap.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { text.setWordWrap(miWrap.getSelection()); tiWrap.setSelection(miWrap.getSelection()); } }); formatMenuItem.setMenu(formatMenu); shell.setMenuBar(menuBar); shell.setSize(400, 200); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } ImageRegistry imageRegistry = new ImageRegistry(); private Image getImage(String shortFileName) { if(imageRegistry.getDescriptor(shortFileName) == null) { ImageDescriptor descriptor = ImageDescriptor.createFromFile(null, "c:/icons/" + shortFileName); imageRegistry.put(shortFileName, descriptor); } return imageRegistry.get(shortFileName); } boolean handleChangesBeforeDiscard() { if(! hasUnsavedChanges) return true; MessageBox messageBox = new MessageBox(shell, SWT.ICON_WARNING | SWT.YES | SWT.NO | SWT.CANCEL); messageBox.setMessage("Do you want to save the changes to " + (file == null ? "a file?" : file.getName())); messageBox.setText(APP_NAME); int ret = messageBox.open(); if(ret == SWT.YES) { return saveTextToFile(); }else if(ret == SWT.NO) { return true; }else{ return false; } } boolean loadTextFromFile() { FileDialog dialog = new FileDialog(shell, SWT.OPEN); if (lastOpenDirectory != null) dialog.setFilterPath(lastOpenDirectory); String selectedFile = dialog.open(); if (selectedFile == null) { log("Action cancelled: loading the text from a file"); return false; } file = new File(selectedFile); lastOpenDirectory = file.getParent(); try { BufferedReader reader = new BufferedReader(new FileReader(file)); StringBuffer sb = new StringBuffer(); String line = null; while((line = reader.readLine()) != null) { sb.append(line); sb.append("\r\n"); } text.setText(sb.toString()); return true; }catch(IOException e) { log("Failed to load the text from file: " + file); log(e.toString()); } return false; } boolean saveTextToFile() { if (file == null) { FileDialog dialog = new FileDialog(shell, SWT.SAVE); if (lastOpenDirectory != null) dialog.setFilterPath(lastOpenDirectory); String selectedFile = dialog.open(); if (selectedFile == null) { log("Action cancelled: saving the text to a file"); return false; } file = new File(selectedFile); lastOpenDirectory = file.getParent(); } try { FileWriter writer = new FileWriter(file); writer.write(text.getText()); writer.close(); log("The text has been saved to file: " + file); hasUnsavedChanges = false; return true; } catch (IOException e) { log("Failed to save the text to file: " + file); log(e.toString()); } return false; } void log(String message) { System.out.println(message); } public static void main(String[] args) { new BasicEditor(); } }