2012-05-04 3 views
11

多くを構築しました多くの場合 GUI:ライブラリに依存関係を持たないので、基本的に多くの基本操作を行います。私が何度も何度もやり続けることの1つは、プリミティブをGUIコンポーネントにマッピングすることです。例えばプリミティブとプリミティブの配列/コレクションを処理するためのGUIライブラリ

それは私はしばしば二つのオプション("true""false")とJCombobox使用booleanであり、それはintである場合、私はJTextFieldを使用する場合。

  • intまたはInteger =>JTextFieldまたはJSpinner
  • boolean =>JTextFieldJComboBoxまたはJCheckBox
  • :作業の多くは、...から、テキストに行く

    いくつかの例マッピングすることですint[] =>JList(「追加」フィールドと「削除」ボタン付き)

  • Set<Byte> =>おそらく、配列の質問へ
  • ので

、同じ:

  • は、このようなマッピングを持っているか、私は再びそれを「考案」しなければならないのライブラリがすでにありますか?
  • 私はフロントエンドとしてリフレクションとSWTを使用しています(スイングを使用して新しいフロントエンドを実装できますが、これは私が避けようとしているものです)。スイングとリフレクションを使用するsimularライブラリはありますか?
+1

、1つの – mKorbel

+2

推測ブールはJCheckBoxのかJToggleButtonにマッピングする必要があります。しかし質問は良いです+1 – StanislavL

+2

これは、 'JTable'がレンダラーとエディタを選ぶ方法を思い出させます。 –

答えて

2

私はいくつかの経験持っていた2つの結合ライブラリがあります。

  1. glazed lists - あなたは、行ごとのJTable(1つの項目にコレクションをマップする際に、このライブラリは絶対に輝いて、列がある属性は、 )。
  2. jgoodies binding - bean属性をgui要素にマッピングするための、より汎用的なライブラリです。その少し複雑で拾いにくいです。

なぜプリミティブですか?あなたはあなたのモデル(guiによって表示/編集されているすべての値のセット)を1つまたは複数のオブジェクトに保存していますか?もしそうなら、あなたはautoboxingに頼ることができ、guiのオブジェクトラッパーで作業することができます。

1

JavaFXこれはまだ私のビールではありません。

0

SwingをベースにしたClojureのGUIライブラリであるseesawを見てみると面白いかもしれません。

Swingの機能を非常に単純な関数でラップするのはかなり良い仕事です。それを直接使用しなくても良いアイデアです。例えば、それは可変データオブジェクトに直接コントロールをバインドすることができます。素敵な質問

; Bind a the value of a slider to an atom, with a transform 
; that forces the value to [0, 1] 
(let [s (slider :min 0 :max 1) 
     a (atom 0.0)] 
    (bind s (transform/100.0) a))