- 浏览: 16459 次
- 性别:
- 来自: 广州
最新评论
文章列表
本节开始大多都是概念知识,如果要api的demo请自行上github上获取。
所谓的SWT四个模块,其实只是我为了分析和讲解swt而自己分的概念,在SWT的文档中,没有这样的说法,其主要目的是为了方便概念的引申,去更加细腻的去 ...
和一般的入门程序一样,我们先写一个简单的swt程序,及分析里面的代码。
public class Demo1 {
public static void main(String[] args) {
new Demo1();
}
public Demo1() {
// 新建一个display
// 相当于创建了一个swt的运行环境
Display display = Display.getDefault();
// 新建一个窗体,窗体就是一个面板,带有标题 ...
==========================前言 start==============================
由于工作原因,公司需要组织对技术人员进行SWT这方面的培训。但是我的思路并不是只讲API,感觉没什么意义,除了比较难处理的bug和扩展,网上随便都可以找到。所以我的思路是,是用我自己对这种技术的理解,和使用的经验,作为培训的主要内容,同时公司也并不允许有太多的时间让新人在培训上,所以,在内容上,更多的也只能讲解思路,而不能注重细节,更加不用提控件的使用,但是我会在github上将控件的demo代码逐一补充,有需要的同学请标个星,将不断更新DEMO。技术讨论:5 ...
两年没用过swt做开发了,现在看回来两年前的代码写法,确实有些惨不忍睹的地方,利用空余的时间小修小补了一下,但是项目中大体的写法设计还是有些问题的,不过本次重点只在于简化开发配置,本次用了注解的方式去处理配置,感觉比之前的字符串的方式,要方便许多。
新增注解说明类:
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
@Target({ElementType.FIELD,ElementType.METHOD})//定义注解的作用目标**作用范围字段、枚举的常量/方法
@Documente ...
闲来无事,看下一下项目上,大部分的http请求类,发现。。都是一个方法,最后得到一个String,一般的方法都是,getStringForHttp(url),getJsonForHttp。那么在这样的方法上,我想实现一个getByteForHttp的话,就只能重新复制一份代码,然后再最后的io操作,再另外处理。
但。。这叫什么面向对象,所以抽了点时间,写了个http的请求项目,暂时没测试出什么问题。希望有需要的,可以拿过去用,及时反馈bug。
1.http请求主流程走向:
/**
* @author lyen.wu
* http请求主流程
*/
publ ...
通过使用本文的设置,引入附件的类,可以达到设置排序,可编辑,显示,换行,适应宽度等功能,tableViewer可以达到很多功能,但也由于功能的强大,导致需要输入代码的冗余和繁重,有没有一种简单的方法,就可以达到默认的基本功能呢。答案是有的,通过java的映射机制,我们可以简化很多有规律的代码在我这篇文章的规范中,model类,会配备一个modelFinal类,final类是为了配置属性的排序,和属性对应的文字的排序。GoodsBean.java
private int goodsId;
private String goodsName;
private String stardard ...
扩展table类,在很多时候table都不止局限于文本的显示,可能还有可输入文本框,按钮,等控件。在这点利用tableeditor可以解决,但是也是由于tableeditor比较冗余的代码,所以我把它封装在一个控件里面,同时也解决了获取item内 ...
个人觉得虽然快捷键这东西,虽然在开发中并不是必须的,但是利用好了快捷键可以减少鼠标使用次数,然后让你的双手,完全放到键盘上。
个人使用过flashbuilder,eclipse,xcode,有个习惯,每次接触新的语言新的编译器,都要先掌握好一些很常用的快捷键,flashbuilder和eclipse都差不多,所以不在此列出来,以下就说下,我比较常用的快捷键。如果有错,请指出来。
1.修改变量或方法名,且更新全部的引用
eclipse:alt+shift+r
xcode:command+control+e
2.代码提示
eclipse:alt+/
xcode:opti ...
在swt中,tableeditor提供了添加tableItem添加附加控件的功能。但是在删除的时候,
有可能会遇到删除了item,btn,editor之后,item和btn没有对齐的情况,就好像下面这种。
那问题怎么解决呢,其实很简单,你可以重新去调用一次tableEditor的layout()事件,就可以帮你刷新了。
又或者重新再setEditor,当然有最方便的,调用table.notifyListeners(SWT.KeyDown, null);
下面是一个小栗子
import java.util.HashMap;
import org.eclipse.swt. ...
关于swt中的事件机制
- 博客分类:
- java,swt
在很多时候,我们都要用到自己抛出事件,所以就必须了解事件的机制
以SelectionListener中的widgetSelected为例子
Button btn = new Button(shell, 0);
btn.setText("这是测试");
btn.addListener(SWT.Selection, new Listener() {
//相当于btn.addSelectionListener(new SelectionListener)实现了widgetSelected
@Override
public void handleEvent(Event ...
关于swt中image的图片信息保存,bitmapdata的用法
bitmapdata其实就是一个图片的信息值,比如一个图片是100*100的size,那么它就有10000个像素点,每个像素点其实就一个颜色值。这个颜色值就是一个32位的ARGB值,用uint整数类型表示,即alpha 和red green blue 三原色。这样的数组组成了所有的图片。0xFF669900表示一个不透明的橙色,其中0X 表示16进制,FF就是就是16进制中2位数的最大值,0XFF相当于100%的意思,669900就是三原色。然后这10000个像素点再交给cpu描绘,就成了图片了。
所以,如果能将bitma ...
在线程中往往需要做一些阻塞,但是如果每次都是写一个循环,那不就很冗余,可以把睡眠的代码分离出来,如果停止睡眠就把sleep设置为false。
这样的设置其实是为了减少调用Thread.sleep的延误,比如说,你是Thread.sleep(30000),那么你在这30000毫秒的时间内,你是做不了事情的,但是如果你是new了MySleep的类,你就可以控制在这30000的时间内何时跳出睡眠。你可以把时间单位调低一点,就可以更加精准了。
public class MySleep {
private long sleepTime = 0;//要阻塞的时间
private ...