2012-05-04 3 views
11

Я построил много много GUI: и мне не нравятся зависимости от библиотек, поэтому я в конечном итоге делаю большую часть основ. Одна вещь, которую я в конечном итоге делаю снова и снова, - это сопоставление примитивов с компонентами графического интерфейса.GUI-библиотека для обработки примитивов и массивов/наборов примитивов

Например, если это boolean я часто использую JCombobox с двумя вариантами ("true", "false"), и если это int я использую JTextField. Большая часть работы, чтобы перейти от и к тексту ...

Некоторые примеры отображения:

  • int или Integer =>JTextField или JSpinner
  • boolean =>JTextField, JComboBox или JCheckBox
  • int[] =>JList (с полем «добавить» и «удалить»)
  • Set<Byte> => вероятно, так же, как массивы

Итак, вопросы:

  • Есть уже библиотека, которая есть отображения, как это, или мне нужно снова «изобретать» это?
  • Я видел jfg, который использует refection и SWT как frontend (вы можете реализовать новый интерфейс с помощью swing, но это именно то, чего я пытаюсь избежать). Есть ли в симуляционной библиотеке качели и исправления?
+1

хороший вопрос, +1 – mKorbel

+2

Guess булево должны быть отображены в JCheckBox или JToggleButton. Но вопросы хорошие +1 – StanislavL

+2

Это напоминает мне, как 'JTable' выбирает рендереры и редакторы. –

ответ

2

есть 2 вяжущие библиотеки я уже имел некоторый опыт работы с:

  1. glazed lists - это библиотека абсолютно светит, когда вы хотите, чтобы отобразить коллекцию в JTable (по одному в каждой строке, столбцы являются атрибутами объекта).
  2. jgoodies binding - более универсальная библиотека для отображения атрибутов bean-элементов для элементов gui. его немного сложнее и трудно подобрать.

и почему примитивы? im assumming, что вы храните свою модель (набор всех значений, отображаемых/отредактированных gui) в одном или нескольких объектах нет? Если это так, вы можете положиться на автобоксинг и работать с обертками объектов в gui.

1

Следует упомянуть JavaFX, который до сих пор не является моим пивом.

0

Возможно, вам будет интересно взглянуть на seesaw, который является графической библиотекой для Clojure, расположенной на Swing.

Это довольно хорошая работа по упаковке функций 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)) 
Смежные вопросы