Tcl & Tk/팁 (Tip)
Jacl을 이용한 SWT 간단 예제
티클러
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