启动时,
tagger-app
应将输入焦点赋予pane2
文本字段。我该怎么做?
(cl:eval-when (:compile-toplevel :load-toplevel :execute)
(ql:quickload :mcclim))
(defpackage :tagger
(:use #:clim-lisp #:clim))
(in-package :tagger)
(define-application-frame tagger-app () ()
(:panes
(pane1 :text-field)
(pane2 :text-field))
(:layouts
(default
(vertically ()
(labelling (:label "Pane 1") pane1)
(labelling (:label "Pane 2") pane2)))))
(defun run-tagger-app ()
(run-frame-top-level (make-application-frame 'tagger-app)))
(run-tagger-app)
我尝试研究 CLIM 文档,但细节太多。
McCLIM 维护者之一 Jackdaniel 在 #CLIM IRC 群组中这样回答
(defmethod clim:run-frame-top-level :before
((app tagger-app) &key)
(clim:stream-set-input-focus (find-pane-named app 'pane1)))
注意使用
:before
,而不是 :after
,因为 run-frame-top-level
不是一个“正常”方法,立即返回结果,但它是一个始终运行的循环(如名称 run-...
所示),即当作为参数传递的框架关闭时将终止。