程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> SWT JFace 小制造 文本閱讀器

SWT JFace 小制造 文本閱讀器

編輯:關於JAVA

SWT JFace 小制造 文本閱讀器。本站提示廣大學習愛好者:(SWT JFace 小制造 文本閱讀器)文章只能為提供參考,不一定能成為您想要的結果。以下是SWT JFace 小制造 文本閱讀器正文


代碼如下:

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;
    }
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved