最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SWT JFace 小制作 文本閱讀器

 更新時間:2009年06月25日 12:07:19   作者:  
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;
    }
}

相關文章

  • Java使用Thumbnailator實現(xiàn)圖片處理功能

    Java使用Thumbnailator實現(xiàn)圖片處理功能

    Thumbnailator是一個簡單且功能強大的Java庫,用于生成縮略圖和執(zhí)行其他圖片處理任務,在這篇博客中,我們將介紹如何使用Thumbnailator進行圖片的縮放、裁剪、旋轉(zhuǎn)等操作,需要的朋友可以參考下
    2024-07-07
  • java獲取昨天日期字符串的方法

    java獲取昨天日期字符串的方法

    這篇文章主要介紹了java獲取昨天日期字符串的方法,涉及java針對日期與時間的運算與轉(zhuǎn)換等相關操作技巧,需要的朋友可以參考下
    2016-08-08
  • Java中HashMap和Hashtable的區(qū)別小結(jié)

    Java中HashMap和Hashtable的區(qū)別小結(jié)

    本文主要介紹了Java中HashMap和Hashtable的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Java實現(xiàn)的打印螺旋矩陣算法示例

    Java實現(xiàn)的打印螺旋矩陣算法示例

    這篇文章主要介紹了Java實現(xiàn)的打印螺旋矩陣算法,結(jié)合完整實例形式詳細分析了java打印螺旋矩陣的算法原理與實現(xiàn)技巧,需要的朋友可以參考下
    2019-10-10
  • Java實現(xiàn)枚舉狀態(tài)轉(zhuǎn)換的方法詳解

    Java實現(xiàn)枚舉狀態(tài)轉(zhuǎn)換的方法詳解

    在軟件開發(fā)中,我們經(jīng)常需要處理不同系統(tǒng)或模塊間的狀態(tài)轉(zhuǎn)換,今天,我將通過一個電商訂單與物流狀態(tài)的轉(zhuǎn)換案例,展示如何優(yōu)雅地實現(xiàn)枚舉間的互相轉(zhuǎn)換,需要的朋友可以參考下
    2025-04-04
  • 簡單了解4種分布式session解決方案

    簡單了解4種分布式session解決方案

    這篇文章主要介紹了簡單了解4種分布式session解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • springboot實現(xiàn)上傳并解析Excel過程解析

    springboot實現(xiàn)上傳并解析Excel過程解析

    這篇文章主要介紹了springboot實現(xiàn)上傳并解析Excel過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • java操作mongodb實現(xiàn)CURD功能實例

    java操作mongodb實現(xiàn)CURD功能實例

    mongodb支持多種語言,并且提供了多種語言的驅(qū)動,本文使用java操作mongodb實現(xiàn)CURD功能,大家參考使用吧
    2013-12-12
  • Scala實現(xiàn)冒泡排序、歸并排序和快速排序的示例代碼

    Scala實現(xiàn)冒泡排序、歸并排序和快速排序的示例代碼

    這篇文章主要介紹了Scala實現(xiàn)冒泡排序、歸并排序和快速排序的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 關于JDK+Tomcat+eclipse+MyEclipse的配置方法,看這篇夠了

    關于JDK+Tomcat+eclipse+MyEclipse的配置方法,看這篇夠了

    關于JDK+Tomcat+eclipse+MyEclipse的配置問題,很多朋友都搞不太明白,網(wǎng)上一搜配置方法多種哪種最精簡呢,今天小編給大家分享一篇文章幫助大家快速掌握JDK Tomcat eclipse MyEclipse配置技巧,需要的朋友參考下吧
    2021-06-06

最新評論

盐池县| 德兴市| 长宁区| 都江堰市| 吐鲁番市| 宝山区| 饶河县| 师宗县| 洪雅县| 新余市| 修文县| 灵璧县| 贺兰县| 肥西县| 阳江市| 凤台县| 乐陵市| 景宁| 新沂市| 武义县| 通道| 且末县| 平阴县| 通化县| 康平县| 枝江市| 泰州市| 宁明县| 武冈市| 哈巴河县| 渑池县| 义乌市| 荥经县| 扶沟县| 定西市| 安龙县| 富顺县| 乐平市| 珲春市| 同德县| 资源县|