2017-11-07 5 views
0

私は128の値を持つenumクラスを使用するプロジェクトを持っており、エンドユーザーが自分の使用方法(たとえば128のうち20個)を選択することを許可したいcheckbotablecellでjavafx tableviewを作成しましたが、うまく動作しますが、各値の可視性を定義するためにenumでbooleanフィールドを作成する必要がありますが、すべての列挙フィールドはfinalであり、動的に変更することはできません。ですから、各enum値の可視性を動的に定義する方法が問題です。Java、enum値の選択されたリストを生成

+3

EnumSetに「可視」にしたい値を入れます。 –

答えて

1

EnumクラスのEnumからBooleanへのマップを作成できます。

例:static final EnumMap<EnumType , Boolean> visibilityMap

さらに、可視性にアクセスするためのgetterメソッドとsetterメソッドを追加します。

+1

正確には、EnumMap です。これでtableviewに値を設定する必要があります。 – brack11

1

EnumSetを保存します。

あなたのenumクラスは、128個のシングルトンオブジェクトを定義しています。複数のオブジェクトを持つことはできません。""同じenumオブジェクトです。解決策は、列挙型オブジェクトを含むクラスを持つことです。または、いくつかの列挙定数のEnumSetを持つ。

EnumSetは、列挙型のためにひどく最適化され、ビルドメソッドを提供するSet実装です。 コンストラクタでは、実際の列挙型自体を型消しで渡すので、クラスは引き続き機能します。

EnumSet<Weekday> weekend = EnumSet.of(Weekday.SATURDAY, Weekday.SUNDAY); 
関連する問題