源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

SWT JFace 小制作 文本阅读器

  • 时间:2022-10-26 01:02 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:SWT JFace 小制作 文本阅读器
代码如下:
[u]复制代码[/u] 代码如下:
package swt_jface.demo11; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.StatusLineManager; import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.window.ApplicationWindow; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class FileViewer extends ApplicationWindow {     Text text;     String content;     String lineDelimiter;     IRunnableWithProgress runnableWithProgress = new IRunnableWithProgress() {         public void run(IProgressMonitor monitor)             throws InvocationTargetException, InterruptedException {             System.out.println("Running from thread: " + Thread.currentThread().getName());             getShell().getDisplay().syncExec(new Runnable() {                 public void run() {                     content = text.getText();                     lineDelimiter = text.getLineDelimiter();                 }             });             monitor.beginTask("Counting total number of lines", content.length());             int lines = 1;             for(int i=0; i<content.length(); i++) {                 if(monitor.isCanceled()) {                     monitor.done();                     System.out.println("Action cancelled");                     return;                 }                 if(i + lineDelimiter.length() < content.length()) {                     if(lineDelimiter.equals(content.substring(i, i+lineDelimiter.length()))) {                         lines ++;                     }                 }                 monitor.worked(1);                 Thread.sleep(1);             }             monitor.done();             System.out.println("Total number of lines: " + lines);         }     };     Action actionCount = new Action("Count", ImageDescriptor.createFromFile(null, "C:/icons/run.gif")) {         public void run() {             try {                 FileViewer.this.run(true, true, runnableWithProgress);             } catch (InvocationTargetException e) {                 e.printStackTrace();             } catch (InterruptedException e) {                 e.printStackTrace();             }         }     };     public FileViewer(Shell parentShell) {         super(parentShell);         addMenuBar();         addStatusLine();         addToolBar(SWT.FLAT);     }     protected Control createContents(Composite parent) {         getShell().setText("FileViewer v2.0");         setStatus("Ready");         text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);         text.setSize(300, 200);         return text;     }     Action actionOpenFile = new Action("Open", ImageDescriptor.createFromFile(null, "C:/icons/open.gif")) {         public void run() {             FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);             final String file = dialog.open();             if(file != null) {                 try {                     String content = readFileAsAString(new File(file));                     text.setText(content);                     setStatus("File loaded successfully: " + file);                 } catch (IOException e) {                     e.printStackTrace();                     setStatus("Failed to load file: " + file);                 }             }         }     };     protected MenuManager createMenuManager() {         MenuManager menuManager = new MenuManager("");         MenuManager fileMenuManager = new MenuManager("&File");         fileMenuManager.add(actionOpenFile);         menuManager.add(fileMenuManager);         MenuManager toolsMenuManager = new MenuManager("&Tools");         toolsMenuManager.add(actionCount);         menuManager.add(toolsMenuManager);         return menuManager;     }     protected StatusLineManager createStatusLineManager() {         return super.createStatusLineManager();     }     protected ToolBarManager createToolBarManager(int style) {         ToolBarManager toolBarManager = new ToolBarManager(style);         toolBarManager.add(actionOpenFile);         toolBarManager.add(actionCount);         return toolBarManager;     }     public static void main(String[] args) {         ApplicationWindow viewer = new FileViewer(null);         viewer.setBlockOnOpen(true);         viewer.open();     }     public static String readFileAsAString(File file) throws IOException {         return new String(getBytesFromFile(file));     }     public static byte[] getBytesFromFile(File file) throws IOException {         InputStream is = new FileInputStream(file);         long length = file.length();         if (length > Integer.MAX_VALUE) {             throw new IllegalArgumentException("File is too large! (larger or equal to 2G)");         }         byte[] bytes = new byte[(int) length];         int offset = 0;         int numRead = 0;         while (offset < bytes.length             && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {             offset += numRead;         }         if (offset < bytes.length) {             throw new IOException(                 "Could not completely read file " + file.getName());         }         is.close();         return bytes;     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部