Wygląda chcesz zarejestrować słuchacza do komponentu arkusza kalkulacyjnego. Aby spełnić swój cel, możesz dodać detektor do obiektu arkusza kalkulacyjnego samodzielnie lub do innego zagnieżdżonego obiektu, który implementuje interfejs obsługujący metodę add. + EventListener().
Poniżej znajduje się para (nadawca/słuchacz), który może Myślę, że można użyć w swoim projekcie: XDocumentEventBroadcaster/XDocumentEventListener
modelu zdarzeń UNO jest wyjaśnione tutaj: https://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Event_Model
Poniżej przedstawiono przykłady, jak używa się tych słuchaczy.
////////////////////////////////////////////////////////////////////
// Add document window listeners.
////////////////////////////////////////////////////////////////////
System.out.println("WriterDoc: Add window listeners.");
// Example of adding a document displose listener so the application
// can know if the user manually exits the Writer window.
document.addEventListener(new XEventListener() {
public void disposing(EventObject e) {
System.out.println(
"WriterDoc (Event Listener): The document window is closing.");
}
});
// Example of adding a window listener so the application can know
// when the document becomes initially visible (in the case of this
// implementation, we will manually set it visible below after we
// finish building it).
window.addWindowListener(new XWindowListener() {
public void windowShown(com.sun.star.lang.EventObject e) {
System.out.println(
"WriterDoc (Window listener): The document window has become visible.");
}
public void windowHidden(com.sun.star.lang.EventObject e) { }
public void disposing(com.sun.star.lang.EventObject e) { }
public void windowResized(com.sun.star.awt.WindowEvent e) { }
public void windowMoved(com.sun.star.awt.WindowEvent e) { }
});
Ponadto usługa SheetCellRange obsługuje interfejs XModifyBroadcaster. Może mógłbyś uzyskać pożądane zachowanie, jeśli zarejestrujesz do niego obiekt XModifyListener. Obiekt implementowałby metodę "zmodyfikowaną", która odbiera EventObject po wywołaniu. Wierzę, że możesz uzyskać, kto wywołujący jest z właściwości źródłowej EventObject. Jeśli źródłem okaże się cały SheetCellRange, możesz spróbować przeszukać wszystkie komórki, które chcesz monitorować, i dodać XModifyListener do każdego z nich. Usługa SheetCell obsługuje również interfejs XModifyBroadcaster.
Przykład stosowania XModifyBroadcaster ze CellRange: http://openoffice.2283327.n4.nabble.com/Re-How-to-get-the-XModifyBroadcaster-from-Cell-CellRange-Table-td2771959.html
zdrowie!
Spróbuj zapytać na kanale IRC libreoffice, niektórzy aktywni deweloperzy siedzą tam i myślę, że jest to dużo bardziej prawdopodobne, że dostaniesz tam odpowiedź. –