@section Swing連携機能

Swingと連携してSchemeでGUIを構築するためのライブラリです。

@defun make-button text action
戻り値: ボタンコンポーネント@*
指定されたtextのボタンを生成します。
ボタンが押下されたときに実行される手続きをactionで指定します。この手続きは引数を1つもつ必要があります。
@end defun

@defun make-button-with-action accelerator-key: accelerator-key long-description: long-description mnemonic-key: mnemonic-key name: name short-description: short-description small-icon: small-icon
戻り値: ボタンコンポーネント@*
アクションを伴うボタンを生成します。@*
アクションの意味は以下の通りです。キーを指定するシンボルについてはこちらを参照してください。
@multitable @columnfractions .25 .7
@item action @tab アクションを指定する手続きを指定します。アクション手続きの引数は1つです
@item accelerator-key @tab アクセラレータキーを指定するシンボルを指定します
@item long-description @tab 長い記述を指定します
@item mnemonic-key @tab ニーモニックキーを指定します
@item name @tab 名称を指定します
@item short-description @tab 短い記述を指定します
@item small-icon @tab アイコンを指定します
@end multitable
@end defun

@defun make-canvas [x1 y1 x2 y2]
戻り値: キャンバスコンポーネント@*
ペインタフレームワークにより描画できるキャンバスを生成します。
引数がないときはシステムの座標系に従います。引数が与えられているときはキャンバスの左上を(x1, y1)、右下を(x2, y2)とした座標系に変換します。そのとき、座標系の方向は数学等で使用されているものになります。(通常コンピュータで使用されている座標系とは異なります
@end defun

@defun make-label name
戻り値: ラベルコンポーネント@*
nameのテキストをもつラベルを生成します。
@end defun

@defun make-panel
戻り値: パネルコンポーネント@*
パネルを生成します。パネルはSwingオブジェクトを複数格納するコンテナとして使用できます。
@end defun

@defun make-text-field size [text]
戻り値: テキストフィールドコンポーネント@*
指定されたテキストサイズをもつテキストフィールドを生成します。 textで指定された初期テキストを指定することもできます。
@end defun

@defun make-text-area [row col]
戻り値: テキストエリアコンポーネント@*
指定された行幅と列幅をもつテキストエリアを生成します。
@end defun

@defun make-window title [xsize ysize [menus]]
戻り値: ウィンドウ(フレーム)コンポーネント@*
ウィンドウ(フレーム)を生成します。この呼び出しでウィンドウは表示されません。
menusにてメニューバーを指定できます。指定方法は以下の通りです。

@multitable @columnfractions .35 .6
@item ("menu1" proc) @tab 1つの引数をもつprocを実行するメニューです。
@item ("menu1" proc key key2) @tab 1つの引数をもつprocを実行するメニューです。ショートカットキーが使用できます
@item ("menu1" seperator) @tab メニュー区切りです
@item ("menu1" (submenu)) @tab 子メニューを指定します
@end multitable
@end defun

@defun exec-window window
戻り値: 未定義@*
ウィンドウを表示します。ウィンドウが閉じられたときにはプログラムを終了します。
@end defun

@defun make-modal-dialog parent-window title x y
戻り値: ダイアログコンポーネント@*
モーダルダイアログコンポーネントを生成します。この呼び出しでダイアログは表示されません。show-windowを使用してください。
@end defun

@defun make-modeless-dialog parent-window title x y
戻り値: ダイアログコンポーネント@*
モードレスダイアログコンポーネントを生成します。この呼び出しでダイアログは表示されません。show-windowを使用してください。
@end defun

@defun get-text has-text
戻り値: 文字列@*
テキストフィールド等のテキストを持つコンポーネントからテキストを取り出します。
@end defun

@defun set-text! has-text str
戻り値: 未定義@*
テキストフィールド等のテキストを持つコンポーネントにテキストを設定します。
@end defun

@defun make-combobox item-list
戻り値: コンボボックスコンポーネント@*
指定されたitem-listのリストの内容を持つコンボボックスを生成します。値は編集可能です。
リストは(表示される値 . get-selected-item-valueで取得される値)のalistです。
@end defun

@defun make-listbox item-list
戻り値: リストボックスコンポーネント@*
指定されたitem-listのリストの内容を持つコンボボックスを生成します。値は編集不可能です。
リストは(表示される値 . オブジェクトとして取得される値)のalistです。
@end defun

@defun get-selected-item-value selectable
戻り値: Schemeオブジェクト@*
リストボックスやコンボボックス等の選択可能なコンポーネントから値を取得します。
@end defun

@defun show-yes-no-dialog parent-component message title message-type
戻り値: はいのときは#t、いいえのときは#f@*
はい/いいえを選択するダイアログを表示します。
parent-componentは親コンポーネントを設定します。親コンポーネントを指定しないときは#fを指定します。
message-typeはエラー・警告・情報等のメッセージ種類をシンボルで指定します。@*
指定できる種類は以下の通りです。

@itemize @bullet
@item error: エラー
@item information: 情報
@item warning: 警告
@item question: 質問
@item plain: アイコンなし
@end itemize
@end defun

@defun show-yes-no-cancel-dialog parent-component message title message-type
戻り値: はいのときは#t、いいえのときは#f、キャンセルされたときはシンボルcanceled@*
はい/いいえ/キャンセルを選択するダイアログを表示します。
@end defun

@defun show-input-dialog parent-component message title message-type
戻り値: 入力された文字列、キャンセルされたときは#f@*
文字列の入力を促すダイアログを表示します。
@end defun

@defun show-message-dialog parent-component message title message-type
戻り値: 未定義@*
メッセージを表示するダイアログを表示します。
@end defun

@defun make-checkbox text
戻り値: チェックボックスコンポーネント@*
チェックボックスコンポーネントを生成します。
@end defun

@defun checkbox-checked? checkbox
戻り値: チェックされていれば#t、そうでなければ#f@*
チェックボックスにチェック状態を取得します。
@end defun

@defun set-checkbox-checked! checkbox check
戻り値: 未定義@*
チェックボックスのチェック状態を変更します。
@end defun

@defun make-file-chooser extension-filters
戻り値: ファイルチューザコンポーネント@*
ファイルチューザを生成します。引数extension-filtersでフィルタリングする拡張子のリストを与えます。書式は以下の通りです。

@example
(("拡張子[,拡張子@dots{}]" . ファイルチューザに表示する文字列
 @dots{})
@end example

この手続きの呼び出しではファイルチューザは表示されません。
show-xxx-file-chooserを呼び出してください。
@end defun

@defun set-file-selection-mode! filechooser mode
戻り値: 未定義@*
ファイルチューザの取得モードを変更します。モードは以下の通りです。
@multitable @columnfractions .3 .6
@item files @tab ファイルのみ
@item directories @tab ディレクトリのみ
@item files-and-directories @tab ファイルとディレクトリ
@end multitable
@end defun

@defun set-accept-all-file-filter-used! filechooser use?
戻り値: 未定義@*
「すべてのファイルを選択する」をフィルタとして使用するかを設定します。
@end defun

@defun show-open-file-chooser filechooser parent-component
戻り値: 選択されたファイル、キャンセルされたときは#f@*
ファイルチューザを「開く」として表示します。
@end defun

@defun show-save-file-chooser filechooser parent-component
戻り値: 選択されたファイル、キャンセルされたときは#f@*
ファイルチューザを「保存」として表示します。
@end defun

@defun show-file-chooser filechooser parent-component approve-button-text
戻り値: 選択されたファイル、キャンセルされたときは#f@*
ファイルチューザを表示します。選択時のボタンをapprove-button-textで指定します。
@end defun

@defun show-window window
戻り値: 未定義@*
ウィンドウを表示します。
@end defun

@defun hide-window window
戻り値: 未定義@*
ウィンドウを隠します。
@end defun

@defun set-dialog-resizable! dialog resize?
戻り値: 未定義@*
ダイアログのサイズ変更を許可するかを指定します。
@end defun

@defun make-menu-item title action-proc [mnenomic-key mnenomic-key-modifier]
戻り値: メニューアイテムコンポーネント@*
メニューアイテムコンポーネントを生成します。
action-procは1つの引数を持つ手続きを与えます。
mnenomic-key mnenomic-key-modifierはニーモニックキーを与えます。キーを指定するシンボルについてはこちらを参照してください。
@end defun

@defun make-radio-button text [action-proc]
戻り値: ラジオボタンコンポーネント@*
ラジオボタンコンポーネントを生成します。
action-procは1つの引数を持つ手続きを与えます。
@end defun

@defun make-button-group radio-button-list
戻り値: ボタングループ@*
ボタングループを生成します。グループに含まれるボタンはradio-button-listで指定します。
@end defun

@defun copy-to-system-clipboard! datum
戻り値: 未定義@*
指定されたSchemeオブジェクトをシステムクリップボードに転送します。
@end defun

@defun get-gui-element-width gui-component
戻り値: GUIコンポーネントの幅@*
指定されたGUIコンポーネントの幅を取得します。
@end defun

@defun get-gui-element-height gui-component
戻り値: GUIコンポーネントの高さ@*
指定されたGUIコンポーネントの幅を取得します。
@end defun

@defun set-background-color! gui-component color
戻り値: 未定義@*
指定されたGUIコンポーネントの背景色を設定します。
@end defun

@defun set-preferred-width! gui-component width
戻り値: 未定義@*
指定されたGUIコンポーネントの幅の推奨値を設定します。
@end defun

@defun set-preferred-height! gui-component height
戻り値: 未定義@*
指定されたGUIコンポーネントの高さの推奨値を設定します。
@end defun

@defun get-bounds-x gui-component
戻り値: コンポーネントのX座標@*
指定されたGUIコンポーネントのX座標を取得します。
@end defun

@defun get-bounds-y gui-component
戻り値: コンポーネントのY座標@*
指定されたGUIコンポーネントのY座標を取得します。
@end defun

@defun set-bounds-x! gui-component x
戻り値: 未定義@*
指定されたGUIコンポーネントのX座標を設定します。
@end defun

@defun set-bounds-y! gui-component y
戻り値: 未定義@*
指定されたGUIコンポーネントのY座標を設定します。
@end defun

@defun get-selected-button-value button-group
戻り値: ボタングループで選択された値@*
指定されたボタングループで選択された値を取得します。
@end defun

@defun set-selected-button-value! button-group datum
戻り値: 未定義@*
指定されたボタングループの選択されている値を変更します。
@end defun

@defun make-horizontal-scroll-bar value extent min max [real-min real-max]
戻り値: 水平スクロールバーコンポーネント@*
水平スクロールバーコンポーネントを生成します。
引数は以下のような意味を持ちます。real-min, real-maxが指定されているときはその値でスケールされます。
@multitable @columnfractions .2 .7
@item value @tab 初期値
@item extent @tab 増分
@item min @tab 最小値
@item max @tab 最大値
@item real-min @tab スケールされた最小値
@item real-max @tab スケールされた最小値
@end multitable
@end defun

@defun make-vertical-scroll-bar value extent min max [real-min real-max]
戻り値: 垂直スクロールバーコンポーネント@*
水平スクロールバーコンポーネントを生成します。
@end defun

@defun get-scroll-bar-value scroll-bar
戻り値: スクロールバーの値@*
スクロールバーの示す値を取得します。
@end defun

@defun get-scroll-bar-relative-value scroll-bar
戻り値: スクロールバーの相対値@*
最小値を0、最大値を1としたスクロールバーの示す相対値を取得します。
@end defun

@defun make-number-spinner value min max step [format]
戻り値: 数値スピナーコンポーネント@*
数値スピナーコンポーネントを取得します。
min,maxを#fにしたときは上限(下限)がなくなります。
formatはjava.text.DecimalFormatの形式に従います。
@end defun

@defun make-tabbed-pane component @dots{}
戻り値: タブ領域コンポーネント@*
タブ領域コンポーネントを生成します。
@end defun

@defun get-selected-tab tabbed-pane
戻り値: GUIコンポーネント@*
タブ領域コンポーネントにおいて現在選択されているコンポーネントを取得します。
@end defun

@defun make-image-icon image-file-name
戻り値: アイコン@*
画像アイコンを生成します。
@end defun

@defun make-frame-icon width height [x1 y1 x2 y2]
戻り値: アイコン@*
ペインタにて描画可能なアイコンを生成します。
x1,y1,x2,y2が指定されたときは描画領域の左上を(x1, y1)、右下を(x2, y2)とします。座標は数学等で使用されるものと同じです。
@end defun

@defun make-text-pane
戻り値: テキスト領域コンポーネント@*
テキスト領域コンポーネントを生成します。
@end defun

@defun set-default-key-action! text-pane action @dots{}
戻り値: 未定義@*
テキスト領域においてキーが押下されたときのデフォルトの動作を指定します。
actionの指定についてはmake-button-with-actionを参照してください。
@end defun

@defun add-key-action! text-pane key key-modifier action @dots{}
戻り値: 未定義@*
テキスト領域において指定されたキーが押下されたときの動作を指定します。
actionの指定についてはmake-button-with-actionを参照してください。
@end defun

@defun set-style! text-pane offset length [[attribute-key attribute] @dots{}]
戻り値: 未定義@*
テキスト領域における文字のスタイルを指定します。テキスト領域のoffsetからlength文字までのテキストが対象になります。

@multitable @columnfractions .25 .7
@item キーワード @tab 内容
@item font-family @tab 後に続く引数でフォントの種類を指定します
@item font-size @tab 後に続く引数でフォントサイズを指定します
@item bold @tab 太文字であることを指定します
@item italic @tab 斜体であることを指定します
@item underline @tab 下線を引くことを指定します
@item strike @tab 取消線を引くことを指定します
@item superscript @tab 上付き文字を指定します
@item subscript @tab 下付き文字を指定します
@item color @tab 後に続く引数で文字の色を指定します
@item background-color @tab 後に続く引数で背景色を指定します
@end multitable
@end defun

@defun beep
戻り値: 未定義@*
ビープ音を鳴らします。
@end defun

@defun layout-grid-bag panel constraint
戻り値: 未定義@*
指定されたパネルをGridBagLayoutに従って整列します。constraintの指定方法は以下の通りです。

@example
(((GUIコンポーネント [(属性 . 値) @dots{}])
  @dots{}
 [((GUIコンポーネント [(属性 . 値) @dots{}])
  @dots{})]
 @dots{})
@end example

属性は以下の通りです。GridBagの詳細はこちらを参照してください。
@multitable @columnfractions .15 .8
@item 属性 @tab 内容
@item weightx @tab セルに対するコンポーネントの幅の比率を指定します
@item weighty @tab セルに対するコンポーネントの高さの比率を指定します
@item fill @tab コンポーネントを拡大するかを指定します。以下のシンボルが指定できます
@item none @tab 拡大しない
@item horizontal @tab 水平方向へ拡大する
@item vertical @tab 垂直方向へ拡大する
@item both @tab 水平・垂直方向へ拡大する
@item gridx @tab x座標の位置を指定します
@item gridwidth @tab x方向の併合セルを指定します (HTMLの<table>タグにおけるcolspanと同じです
@item gridheight @tab y方向の併合セルを指定します (HTMLの<table>タグにおけるrowspanと同じです
@end multitable
@end defun

@defun layout-grid panel layout [xgap ygap]
戻り値: 未定義@*
指定されたパネルをGridLayoutに従ってマス目状に整列します。並べたいコンポーネントはlayoutを以下のように並べて指定します。

@example
(((1列目コンポーネント 2列目コンポーネント @dots{}) ;この列が1行目
 ((1列目コンポーネント 2列目コンポーネント @dots{}) ;この列が2行目
 @dots{})
@end example

GridLayoutについてはこちらを参照してください。
@end defun

@defun layout-border panel layout [xgap ygap]
戻り値: 未定義@*
指定されたパネルをBorderLayoutに従ってマス目状に整列します。並べたいコンポーネントはlayoutにalistの形で指定します。 alistの値は並べたいコンポーネントを指定します。alistのキーは以下のように指定します。
@multitable @columnfractions .22 .7
@item キーのシンボル @tab 内容
@item center @tab 値のコンポーネントを中央に配置する
@item north @tab 値のコンポーネントを上に配置する
@item south @tab 値のコンポーネントを下に配置する
@item east @tab 値のコンポーネントを右に配置する
@item west @tab 値のコンポーネントを左に配置する
@end multitable
BorderLayoutについてはこちらを参照してください。
@end defun

@defun layout-flow component @dots{}
戻り値: 未定義@*
引数のコンポーネントをFlowLayoutに従って整列します。
FlowLayoutについてはこちらを参照してください。
@end defun

@defun add-action-listener! has-action action-proc
戻り値: 未定義@*
アクションを持つコンポーネントにアクションを追加します。 action-procはアクションイベントを引数に1つ持つ手続きを指定します。
@end defun

@defun add-mouse-listener! has-mouse-event event-proc
戻り値: 未定義@*
マウスイベントを持つコンポーネントにアクションを追加します。 action-procはマウスイベントを引数に1つ持つ手続きを指定します。
@end defun

@defun add-item-listener! has-item-event event-proc
戻り値: 未定義@*
アイテムイベントを持つコンポーネントにアクションを追加します。 action-procはアイテムイベントを引数に1つ持つ手続きを指定します。
@end defun

@defun add-adjustment-listener! has-adjustment-event event-proc
戻り値: 未定義@*
調整イベントを持つコンポーネントにアクションを追加します。 action-procは調整イベントを引数に1つ持つ手続きを指定します。
@end defun

@defun add-change-listener! has-change-event event-proc
戻り値: 未定義@*
変更イベントを持つコンポーネントにアクションを追加します。 action-procは変更イベントを引数に1つ持つ手続きを指定します。
@end defun

@defun add-window-listener! has-window-event event-proc
戻り値: 未定義@*
ウィンドウイベントを持つコンポーネントにアクションを追加します。 action-procはウィンドウイベントを引数に1つ持つ手続きを指定します。
@end defun

@defun get-action-command action-event-object
戻り値: アクションコマンドの文字列@*
アクションの手続きの引数で渡されるイベントオブジェクトからアクションのコマンドを取り出します。
@end defun

@defun get-when action-event-object
戻り値: アクションが実行された時間(SRFI-19形式)@*
アクションの手続きの引数で渡されるイベントオブジェクトからアクションが実行された時間を取り出します。
@end defun

@defun get-param-string action-event-object
戻り値: パラメータの文字列@*
アクションの手続きの引数で渡されるイベントオブジェクトからパラメータの文字列を取り出します。
@end defun

@defun get-mouse-button mouse-event-object
戻り値: 下記参照@*
マウスイベントの手続きの引数で渡されるイベントオブジェクトからクリックされたマウスボタンを取得します。戻り値は以下の通りです。
@multitable @columnfractions .25 .7
@item ボタンのシンボル @tab 内容
@item no-button @tab ボタンはクリックされていません
@item button1 @tab 1番目のボタンがクリックされました(Windows,Linux環境では左ボタン)
@item button2 @tab 2番目のボタンがクリックされました(Windows,Linux環境では右ボタン)
@item button3 @tab 3番目のボタンがクリックされました(UNIXワークステーション等で使用)
@item unknown-button @tab 値のコンポーネントを左に配置する
@end multitable
@end defun

@defun get-mouse-click-count mouse-event-object
戻り値: クリックされた回数@*
マウスイベントの手続きの引数で渡されるイベントオブジェクトからクリックされた回数を取得します。
@end defun

@defun get-mouse-x mouse-event-object
戻り値: クリックされたマウスX座標@*
マウスイベントの手続きの引数で渡されるイベントオブジェクトからクリックされた場所のX座標を取得します。座標はシステムの座標系で渡されます。
@end defun

@defun get-mouse-y mouse-event-object
戻り値: クリックされたマウスY座標@*
マウスイベントの手続きの引数で渡されるイベントオブジェクトからクリックされた場所のY座標を取得します。座標はシステムの座標系で渡されます。
@end defun

@defun popup-trigger? mouse-event-object
戻り値: ポップアップトリガのとき#t@*
マウスイベントの手続きの引数で渡されるイベントオブジェクトがポップアップトリガかを調べます。
@end defun

@defun get-event-selected-item-value item-event-object
戻り値: 選択された項目@*
選択イベントの手続きの引数で渡されるイベントオブジェクトから選択された項目を取得します。
@end defun

@defun get-event-adjustment-value adjustment-event-object
戻り値: 選択された値@*
調整イベントの手続きの引数で渡されるイベントオブジェクトから選択された値を取得します。 
@end defun

