2007/04/26

Java SWT 增加 KeyBoard, Mouse Listener

在 SWT 處理 KeyBoard 和 Mouse 的 Event

Example Code:

1. KeyBoard:

[java]public class KeyBoard {
private Shell shell;

public KeyBoard(Shell _shell) {
this.shell = _shell;

this.shell.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
// ignored
}
public void keyReleased(KeyEvent e) {
if(e.stateMask == SWT.CTRL && e.keyCode == 'c') {
System.out.println("ctrl + c");
}
}
});
}
}[/java]

2. Mouse:

[java]public class Mouse {
private Shell shell;

public Mouse(Shell _shell) {
this.shell = _shell;

this.shell.addMouseListener(new MouseListener() {
public void mouseUp(MouseEvent e) {
// mouse up
}
public void mouseDown(MouseEvent e) {
// mouse down
}
public void mouseDoubleClick(MouseEvent e) {
// mouse double click
}
});
}
}[/java]

3. KeyBoard and Mouse

[java]public class Both {
private Shell shell;

public Both(Shell _shell) {
this.shell = _shell;

Listener l = new Listener() {
Point origin;
public void handleEvent(Event e) {
switch (e.type) {
case SWT.MouseDown:
origin = new Point(e.x, e.y);
break;

case SWT.MouseUp:
origin = null;

if(e.button == 1) {
// left button
}
break;

case SWT.MouseMove:
if (origin != null) {
Point p = display.map(shell, null, e.x, e.y);
shell.moveTo(p.x - origin.x, p.y - origin.y);
}
break;

case SWT.MouseDoubleClick:
break;


case SWT.KeyDown:
break;
}
}
};
this.shell.addListener(SWT.MouseDown, l);
this.shell.addListener(SWT.MouseUp, l);
this.shell.addListener(SWT.MouseMove, l);
this.shell.addListener(SWT.MouseDoubleClick, l);
this.shell.addListener(SWT.KeyDown, l);
}
}[/java]

如果 1, 2 和 3 一起使用

都會有效果

以使用的順序為執行的順序

2007/04/25

Java SortedProperties

原始的 java.util.Properties 是以 java.util.Hashtable 來儲存資料

因此輸出的結果會以亂數排列

如果想使用 sort 過的 Properties

需要重新 override keys

程式碼如下:

SortedProperties.java

[java]import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
import java.util.Set;

public class SortedProperties extends Properties {

@ Override
public Enumeration keys() {
List sortedList = new ArrayList();
sortedList.addAll((Set) this.keySet());
Collections.sort(sortedList);
return (Enumeration) Collections.enumeration(sortedList);
}
}[/java]

2007/04/23

server 硬體清單與查詢方式

我的硬體清單:

CPU:Intel Pentium III 669.898 MHz (667MHz)
RAM:508480k/524224k available (512M)
硬 碟:ATA Maxtor 32049H2 UDMA/100 20491MB (20G)
    ATA ST320423A UDMA/66 20486MB (20G)
光碟機:ATAPI CD-ROM 50X
網路卡:RealTek RTL8139 10/100 PCI Ethernet *2
顯示卡:nVidia Corporation NV17 [GeForce4 MX 440]
音效卡:Intel Corporation 82801BA/BAM AC'97 Audio (on board)

附註:

查硬體方式

1.

test@test-server:~$ cat /var/log/messages



2.

test@test-server:~$ lspci



3.

test@test-server:~$ cat /proc/*



4.

test@test-server:~$ sudo hdparm /dev/sda

2007/04/10

CSS 配合瀏覽器作微調

在使用 CSS 時

不同的瀏覽器

對 padding, margin, width, height, top, left... 等定位的定義不一樣

我自己原先的方法是以 Firefox 為主

再對 IE 作微調

利用下面的 java script

lib.js
[js]// JavaScript Document lib.js

function BrowserIsIE()
{
if( document.getElementById && !document.all )
{
return false // Netscape v6.0 or upper.
}
return true // MSIE.
}[/js]



[js]


[/js]

另外寫個 ie.css 作調整


今天發現新的方法

http://srwiay.blogspot.com/2007/02/css.html

可以更簡便的調整

以下作些紀錄

---

Firefox 設定 padding 會影響 width, height

方法

1.
_:IE7以前的版本可以判讀
*:IE6以前的版本可以判讀
_、*:FireFox兩者皆忽略

ex:
[css]div {
width: 100px; // set Firefox
*width: 110px; // set IE6
_width: 120px; // set IE7
}[/css]

2.
* +html:IE7可以判讀
* html:IE6以前的版本可以判讀

[css]#test {width: 100px;} // set Firefox
* html #test {width: 110px;} // set IE6
* +html #test {width: 120px;} // set IE7[/css]