2013-01-15 9 views
6

UIで編集したデータをユーザーに警告する方法です。別のソースから読み込んだ場合、または保存するように促す場合は、上書きを警告できますか? (JavaFX2.2)UIで編集したデータをユーザーに警告する方法で、上書きを警告したり、保存を促したりできますか? (Java)

多くのタブには50以上のテキストフィールドがあり、行を追加したり削除したりするボタンを持つ2つまたは3つのテーブルがあります。

グローバルな 'isDirty'ブールフラグがあるかどうか疑問に思っていて、ボタンのonActionハンドラを設定することができますが、テキストフィールドとテキストエリアのそれぞれにonKeyTypedハンドラを設定する必要がありますか? (それは物事を遅らせるか?)。 Javaはフィールドが編集されたかどうかを追跡しますか?もしそうなら、そのフィールドから情報を取得できますか?

+3

すべてのデータを別々のデータモデルに保存し、データモデルとテキストフィールドとテーブルの内容をロードおよび保存アクションのリスナーとして比較する方が簡単な場合があります。 –

+0

データモデルを使用すると、IMHOが悪化しますが、明らかに私はテーブルのArrayList(データモデル)を持っています。これらはデバイスの設定パラメータです。私はデバイスからデータを読み込み、それを画面に表示しています。複数のデバイスが接続されている可能性があり、1つのデバイスから別のデバイスに保存できるため、保存されていないデータを上書きする危険性があります。 – likejiujitsu

+0

2つのモデルを比較したくない場合は、新しいクラス「dirty」で更新されたフィールドのタグを更新することもできます。その後、汚れたフィールドを検索し、適切に処理することができます。 – Zylth

答えて

0

クリーンな解決策は、UIの起動時にデータで満たされる一種のMyWholeDatasetクラスと、実際のUI表示に使用される別の「クローン」オブジェクトを持つことです。 その後、ユーザーがUIからデータを変更するたびに、2番目のオブジェクト(クローンされたオブジェクト)が変更されます。 最後に、Comparableインターフェイスを実装する必要があります。これは違いがあることを示しています。たとえば、異なるフィールド名のセットまたはキーとしてフィールド名を返すハズマップのいずれかを返す、ある種の「getDeltas」メソッドや古いものか新しいものを含むオブジェクトを持つことができます値としての値のペア。

+0

これは上記のgilbertのコメントと似ています。 – likejiujitsu

+0

はい、適切なOOPに関しては、「方法」でなければなりません。私はギルバートが「元の」モデルと「GUIで修正した」モデルを比較する方法を書いていないので、明確にすることを好むだけです。私の意見では、最良の解決策は、Comparableインターフェースを使用して、モデルを自分自身と比較させ、違いのセットを取得するメソッドを提供することです。それでおしまい。 –