2016-05-11 132 views
0

如何在Java進程中創建java.awt.Canvas對象,並將其傳遞給另一個(子進程)進程,並讓其他進程在其上放置輕量(swing)組件。子進程應該處理放置在畫布上的組件的事件。當然,事件調度線程應該按預期運行。在進程之間共享Java畫布

+0

進程或線程之間的份額? –

+0

進程。線程,我可以處理:) – b10y

回答

0

不可能在兩個進程之間共享Canvas,因爲Canvas是一個對象實例,您可以共享有關該對象的信息,而不是對象實例。

例如,您最終可以在兩個進程上覆制畫布,但更改一個進程上的值不會反映到第二個進程上,因爲內存在進程之間被隔離。


什麼是可以做的是創建在畫布上進行操作,從一個進程,可以使用一個Socket作爲通信系統之外的接受指令的類。所以在這種情況下,您有一個Canvas「導演」以及許多可以與之互動的流程。

+0

我正在考慮一些本地方法,可能與JNA。 – b10y

+0

技術上應該可以在進程之間共享內存(至少在linux中),但真正複雜(不確定如果可能)訪問與JVM相關的信息。更好的解決方案應該是使用單點訪問來修改畫布,以使用套接字機制從外部公開要調用的方法 –