私は以下の問題を抱えています:ObservableListのオブジェクトを取得して、自分のメソッドを記述することはできますか?
私はActiveDateListとMainFrameの2つのクラスを持っています。 ActiveDateList(シングルトンとして記述)はArraylistを拡張し、現在アクティブな "MyDate"を保持します。
ActiveDateList:
public class ActiveDateList extends ArrayList<MyDate>{
private static ActiveDateList instance;
private ActiveDateList(){}
public static ActiveDateList getInstance(){
if(instance == null){
instance = new ActiveDateList();
}
return instance;
}
...
public void addSorted(MyDate md){
...
}
}
メインフレームクラスは "ActiveDateList" のObservableListを使用する必要があるJavaFXアプリケーションです。
コードそうする:
ActiveDateList activeDatelist = ActiveDateList.getInstance();
ObservableList<MyDate> observableADList = FXCollections.observableList(list);
しかしそうした後、私は「addSorted」のようなものがObservableListを介してアクセスすることができないので、私は、ActiveDateListに持っているすべての自己書かれたメソッドへのアクセスを失い、私がactiveDateList.addSorted(..)を呼び出すたびにobservableADListは明らかにリスナーに通知しません。
ObservableListを実装するClassが必要で、すべてのメソッドをオーバーライドする代わりに、ArrayListクラスのメソッドを使用するだけで、自分のメソッドを書き込むことができます。
すべてのアイデアに感謝します。
static static void addSorted(MyDate md、Listリスト)メソッドを追加し、現在の静的でないaddSortedメソッドを委譲することを検討してください。 –
VGR
あなたのシングルトンはスレッドセーフではありません。あなたのシングルトンに 'enum'を使うことをお勧めします。これは、シングルトンが必要とする機能(デフォルトではスレッドセーフな初期化、プライベートコンストラクタ)にバンドルされているので、 - [enumでシングルトンを実装する]をチェックしてください(https://stackoverflow.com/questions/26285520/implement-single-with-enum-in-java)を使用します。シングルトンを複数のスレッドに渡って使用する場合は、 'class'を使用する方がよい場合は、[double-checked locking](https://en.m.wikipedia.org/wiki/Double-checked_locking)を実装する必要があります。これは解決策ではなく、単なる提案です。 –