亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

SWT JFace 小制作 文本閱讀器

2020-01-31 16:51:08
字體:
來源:轉載
供稿:網友
代碼如下:
復制代碼 代碼如下:

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;
    }
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品福利在线| 久久久久久久久综合| 日本亚洲欧美成人| 亚洲欧美另类自拍| 亚洲美女激情视频| 秋霞成人午夜鲁丝一区二区三区| 欧美日韩国产综合新一区| 欧美亚洲日本黄色| 久久av红桃一区二区小说| 成人a在线视频| 国产精品久久久久久久久借妻| 久久久国产一区| 国产一区二区三区在线视频| 福利一区视频在线观看| 91av在线精品| 欧美最猛性xxxxx亚洲精品| 欧美性理论片在线观看片免费| 欧美猛交ⅹxxx乱大交视频| 欧美性videos高清精品| 欧美精品生活片| 97视频在线观看免费高清完整版在线观看| 美女999久久久精品视频| 全色精品综合影院| 欧美裸身视频免费观看| 8x海外华人永久免费日韩内陆视频| 国产日本欧美一区二区三区在线| 国产精品99久久久久久白浆小说| 国产精品91免费在线| 久久精品国产亚洲| 日本成人在线视频网址| 国产精品主播视频| 国产精品盗摄久久久| 精品高清美女精品国产区| 国产盗摄xxxx视频xxx69| 欧美极品第一页| 欧美精品久久一区二区| 欧美亚洲视频一区二区| 国产99在线|中文| 国产欧美在线观看| 国产视频一区在线| 97视频网站入口| 欧洲成人免费视频| 久久中文字幕国产| 性金发美女69hd大尺寸| 2019中文字幕在线免费观看| 精品久久中文字幕久久av| 亚洲国产精品人久久电影| 中文字幕免费精品一区| 国产精品久久不能| 中文字幕精品一区二区精品| 中文字幕日韩av综合精品| 久久九九有精品国产23| 国产激情综合五月久久| 国产精品视频导航| 懂色av一区二区三区| 日韩a**中文字幕| 欧美在线播放视频| 91精品国产亚洲| 亚洲一区二区免费在线| 高清欧美一区二区三区| 日韩精品在线视频美女| 亚洲成色777777在线观看影院| 欧美精品一区二区三区国产精品| 38少妇精品导航| 国产成人在线精品| 国产一区二区在线免费| 亚洲欧美视频在线| 中文字幕精品视频| 91中文在线观看| 精品视频偷偷看在线观看| 亚洲一区二区三| 性欧美长视频免费观看不卡| 国产精品美乳一区二区免费| 91久久国产精品| 亚洲mm色国产网站| 色综合久久悠悠| 中文字幕9999| 7777免费精品视频| 91精品中文在线| 欧美电影免费播放| 久久久亚洲影院你懂的| 久久久国产一区二区三区| 精品动漫一区二区三区| 欧美视频在线免费| 精品亚洲aⅴ在线观看| 亚洲国产小视频| 日韩欧美有码在线| 性欧美xxxx| 国产美女精品视频免费观看| 久久久久久久久久久网站| 91精品国产高清久久久久久91| 青青草原成人在线视频| 最近中文字幕mv在线一区二区三区四区| 国产精品视频久久久久| 日韩欧美亚洲一二三区| 亚洲精品wwwww| 97视频在线观看播放| 亚洲mm色国产网站| 日本高清久久天堂| 在线日韩中文字幕| 亚洲视频一区二区三区| 亚洲欧美综合v| 亚洲国产美女久久久久| 亚洲精品www久久久| 亚洲成年网站在线观看| 亚洲美女av在线| 欧美日韩一区二区免费在线观看| 精品精品国产国产自在线| 国产欧美婷婷中文| 久久久国产精品视频| 久久精品99久久久久久久久| 91精品久久久久久久久久| 97视频在线看| 欧美激情精品久久久久久大尺度| 欧美中文字幕第一页| 国产亚洲精品久久久久动| 欧美性猛交xxxxx水多| 在线免费观看羞羞视频一区二区| 国产99视频在线观看| 精品国产一区二区三区四区在线观看| 亚洲成人在线网| 国语自产在线不卡| 91美女福利视频高清| 91在线精品播放| 精品性高朝久久久久久久| 91精品久久久久久久久| 亚洲天堂av在线播放| 国产有码在线一区二区视频| 欧美老少做受xxxx高潮| 久久国产精品偷| 成人免费大片黄在线播放| 国产精品一区二区久久久久| y97精品国产97久久久久久| 亚洲激情视频在线观看| 日韩中文字幕在线免费观看| 91色精品视频在线| 欧美国产日韩xxxxx| 国产精品一二三在线| 欧美国产日韩一区二区| 久久韩国免费视频| 日本一区二区不卡| 欧美日韩亚洲天堂| 亚洲成av人乱码色午夜| 色99之美女主播在线视频| 色综合亚洲精品激情狠狠| 在线精品视频视频中文字幕| 亚洲天堂一区二区三区| 国产精品网站入口| 成人精品视频99在线观看免费| 亚洲欧美日韩一区在线| 97精品久久久| 国产精品扒开腿做| 亚洲视频777| 91国内在线视频| 欧美激情精品久久久久| 亚洲视频在线观看网站| 成人黄色av免费在线观看| 欧美日韩国产色| 国模精品视频一区二区三区| 91久久精品国产91久久| 国产亚洲美女精品久久久| 亚洲女人天堂成人av在线| 久久久久久久激情视频| 中文字幕亚洲欧美日韩在线不卡|