본문으로 바로가기

Jacl을 이용한 SWT 간단 예제

category Tcl & Tk/팁 (Tip) 2025. 3. 17. 14:42

swt 다운로드: http://www.eclipse.org/swt/
jacl 다운로드: http://tcljava.sourceforge.net/
j2sdk 다운로드: http://java.sun.com/j2se/1.4.2/download.html

Jacl은 Java로 작성된 Tcl 인터프리터입니다. 때문에 Tcl과 동일한 기능을 제공하지는 않습니다. 단적인 예로 Tk를 지원하지 않는다는 겁니다. 아래는 jacl을 빌드 후 swt의 예제를 Jacl로 변경해서 테스트해 본 예제입니다. 테스트 전 다운로드한 SWT의 jar 파일을 jaclsh.bat내의 CLASSPATH에 추가해야 합니다. 본래 Java 코드는 아래와 같습니다.

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
 
public class SWTHelloWorld {
 
public static void main (String [] args) {
        Display display = new Display ();
        Shell shell = new Shell(display);
 
        Text helloWorldTest = new Text(shell, SWT.NONE);
        helloWorldTest.setText("Hello World SWT");
        helloWorldTest.pack();
 
        shell.pack();
        shell.open ();
        while (!shell.isDisposed ()) {
                if (!display.readAndDispatch ()) display.sleep ();
        }
        display.dispose ();
}

아래는 tcl로 포팅한 코드입니다.

package require java
java::import org.eclipse.swt.SWT
java::import org.eclipse.swt.widgets.Display
java::import org.eclipse.swt.widgets.Shell
java::import org.eclipse.swt.widgets.Text

set display [java::new Display]
set shell [java::new Shell $display]

set text [java::new Text $shell [java::field SWT NONE]]

$text setText "hello world"
$text pack
$shell pack
$shell open

while { ![$shell isDisposed] } {
        if { ![$display readAndDispatch] } { $display sleep }
}

$display dispose
C:\> jaclsh.bat sample.tcl