2017-05-07 27 views
2

我有一個PackingCanvas,它在屏幕上繪製元素,這是JavaFX控件的擴展。我希望我的元素能夠在調整大小時繪製,但只有在調整大小後才能繪製,因爲在某些情況下,重繪每個大小調整事件的整個畫布可能會過於昂貴。僅觸發JavaFX中一系列事件中的最後一個事件

我現在擁有的是以下幾點:

widthProperty().addListener(evt -> draw()); 
heightProperty().addListener(evt -> draw()); 

我試圖與線程這樣做;添加一個小延遲,看看是否新建了一個新線程,如果沒有; draw(),否則放棄當前線程。

但是,這似乎不是一個優雅的解決方案給我。有沒有一個成語來解決這些問題?

+0

使用[ReactFX](https://github.com/TomasMikula/ReactFX):「考慮,需要每一個其寬度或高度發生變化時重新繪製一個矩形使用指示器和流組合器,我們可以將上例中的重繪數量減少到1。 – jewelsea

回答

0

您可以緩存寬度& draw()函數內部的高度。

void draw() 
{ 
    cacheHeight = getHeight(); 
    cacheWidth = getWidth(); 
} 

然後

heightProperty().addListener(evt -> {if(getHeight()!=cacheHeight) draw();}); 
相關問題