活活,,虽然一直在用Eclipse,对swt了解实在不多。。-_-!!
解决方案 »
- 周末考试急需回答 谢谢
- Math.max(int a, int b)这方法输出是?
- 判断变量X是奇数还是偶数,master来给我点批评
- java中的$是什么意思啊,请各位帮忙
- xml解析程序,class文件生成后,用java运行时报错 请教!
- java的throw Eeception和throws Eeception有什么区别
- 连接sqlserver的url是jdbc:microsoft:sqlserver://192.168.0.100:1433,他连那一个数据库呢?
- 请教正则问题:句子里含有句点 . 当我用((\w*\s*\.*)*)提取句子时出现StackOverflowError
- 我想做一个线条对象
- 有关WINDOW
- Java变量类型间的相互转换 (转载)
- Eclipse插件
目前我的项目有两个选择,用JAVA或者用VC,
VC的程序框架不如JAVA的好,MFC的东西实在是不便于理解,相比之下JAVA非常简单一致.项目组使用JAVA经验比VC要丰富一些.以前用JAVA开发Service比较多.
并且服务程序用JAVA的可能性比较大,这样一来用C的话通讯就可能出现问题,当然也是可以解决的.
JAVA的问题在于,JDK中的图形界面(AWT)效率底,Eclipse使用SWT,效率提高了,但是又是使用了JNI.如果他的效率仍然和VC相差很多,那么我为什么要用他呢?
swt是eclipse自己用的,不推荐用来写程序。
-------------------我也觉得使用SWT的部署会很复杂,
您的说法是怎样得来的呢?是有资料这么说,还是您自己的经验?您部署过SWT程序吗?是不是真的困难重重.
对eclipse project来说,swt是对应于awt的
jface是对应于swing的。
如果熟悉awt,swing的话,那么是很好上手swt/jface的。
你可以去看ibm.com开发者论坛提供的两个例子
最好也去看eclipse.org提供的例子。
如果去sourceforge的话,也很容易找到关于swt/jface的项目。从部署上来说,我不明白swt部署会有什么问题。它其实就是需要一个dll,你把eclipse/plugin/swt下面的一个swt-awt-win32-3030.dll,swt-win32-3030.dll拷贝到j2se目录下bin就可以了么。如果你把它加到path里面那也可以。总之swt需要这个dll支持,仅此而已。swt/jface主要提供了标准化的界面,已经相对于awt/swing更快的速度。整个eclipse就是用swt写的。你不妨体会一下和win native program有什么速度上的差异。有趣的是,ibm自称是awt/swing 的一个强大的挑战者,而sun则对swt/jface指责为另外一个awt/swing架构的开发品。在3.0M5版本中,已经能够整合swt和awt,在可以预见的将来,swt/awt,jface/swing走向融合是明智的。
这是界面部分源代码,删去了无关的,留下了和界面有关的,添加了必要的注释。
放上来的目的纯粹是因为swt/jface的各种入门资料实在太少了,资源共享可以帮助更多的人
代码可能写的有点差,随便看看就好了/**
* <pre>
* main editor of the project.
* </pre>
*
* @version 1.0.0 2003-10-27
* @author allen
* <dl>
* <dt><b>change version</b></dt>
* <dd>
*
* <pre>
* 0.0.1 2003-12-02 create author : allen
* </pre>
*
* </dd>
* </dl>
*/
public class JEditor extends ApplicationWindow {
/**
* text presentation
*/
private TextPresentation textpresent;
/**
* text viewer
*/
private SourceViewer texteditor;
/**
* document
*/
private Document document; /**
* sourceview configuration
*/
private Configuration configur; //constructor
JEditor() {
super(null);
document = new Document();
configur = new Configuration();
//menu bar & status bar created here;
addMenuBar();//添加菜单
addStatusLine();//添加状态栏
}
/////////////////OVERRIDE////////////////////////////////////////
//改写基类,构造主界面
protected Control createContents(Composite parent) {
//////////////set title///////////////
getShell().setText("JEditor");
//////////////create viewer//////////////
CompositeRuler ruler = new CompositeRuler();
ruler.addDecorator(0, new LineNumberRulerColumn());
texteditor = new SourceViewer(parent, ruler, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
texteditor.setDocument(document);
/////////////configure//////////////////
texteditor.configure(configur);
/////////////partitionerlistener///////////
IDocumentPartitioner documentPartitioner = createJavaPartitioner();
document.setDocumentPartitioner(documentPartitioner);
documentPartitioner.connect(document);
document.addDocumentPartitioningListener(new JDocumentPartitioningListener(this));
texteditor.addTextListener(new JTextInputListener(this)); return texteditor.getControl();
}
//改写基类,创造菜单
protected MenuManager createMenuManager() {
MenuManager bar_menu = new MenuManager("");
//创造菜单栏
MenuManager file_menu = new MenuManager("ファイル(&F)");
bar_menu.add(file_menu);
//创造菜单选项,OpenAction,SaveAction都是继承自Action
file_menu.add(new OpenAction(this));
file_menu.add(new SaveAction(this));
return bar_menu;
}
//改写基类,创造状态栏
protected StatusLineManager createStatusLineManager() {
StatusLineManager statusLine = new StatusLineManager();
//创造状态栏的两个"内容",我也不知道怎么说
StatusLineContributionItem status1 = new StatusLineContributionItem("bytes");
status1.setText("BYTE COUNT:");
statusLine.add(status1); status1 = new StatusLineContributionItem("info");
status1.setText("");
statusLine.add(status1);
return statusLine;
} // create Document Partitioners
private IDocumentPartitioner createJavaPartitioner() {
return new DefaultPartitioner(new JavaPartitisonScanner(), new String[] { JavaPartitisonScanner.XML_COMMENT, JavaPartitisonScanner.XML_MULTILINE_COMMENT, JavaPartitisonScanner.STRING, JavaPartitisonScanner.XML_TAG });
}
}
运行代码:
public static void main(String[] args) {
JEditor editor = new JEditor();
editor.setBlockOnOpen(true);
editor.open();
Display.getCurrent().dispose();
}
private IDocumentPartitioner createJavaPartitioner()
这个方法和相关调用都可以删掉,这个只是提供了对文档进行匹配
和界面无关的
addListener之类的都可以不要,总之如果编译不过,只要把出错的delete掉就可以
最后路径需要swt.jar和jface.jar
dll文件需要在j2se/bin目录下
import之类的太长,没有放上来
小弟没有用swt和jface做过开发,呵呵,因为我从来没有用java写应用程序界面。
在读eclipse源码的时候感觉swt不适合我们用来做开发。
第一:资料少,学习起来费劲
第二:用户很少,不是标准