LibreOffice5(54)Javaの例:GUIを実行する

2017-06-30

旧ブログ

t f B! P L
Javaの例のGraphical User InterfacesをPythonにしますが、まずその前にJavaの例を実行してみます。

前の関連記事:LibreOffice5(53)Javaの例:ConfigExamplesをPythonにする その6


Javaの例: Graphical User Interfaces


ソースは/opt/libreoffice5.2/sdk/examples/DevelopersGuide/GUIにあります。

LibreOffice5(48)Javaの例:ConfigExamplesをPythonにする その1と同様にしてまずTerminalで実行してみます。

setsdkenv_unixのランチャで起動したTerminalでソースのフォルダを開けて次のコマンドで実行できます。

make DialogDocument.run

ダイアログにオフィスのドキュメントを表示させる例です。


このような大きなダイアログが開いて、その中に新しいWriterドキュメントが表示されています。

文字が入力できますがその文字はすごく小さいです。

「Close dialog」ボタンをクリックすると終了します。

make MessageBox.run

Calc(2)課題2:選択範囲の行列番号をメッセージボックスに表示のメッセージボックスを表示させる例です。


バックグラウンドでWriterのドキュメントを開いて、LibreOffice(32)デベロッパーガイド4:コンポーネントフレームワークで学習したようにそれをモデルとしてそこからコントローラ→フレーム→コンテナウィンドウを取得して、そのツールキットのXMessageBoxFactoryインターフェイスのcreateMessageBox()メソッドでメッセージボックスを表示させています。

「OK」ボタンをクリックすると終了します。

make UnoDialogSample.run

ダイアログで使えるコントロールの例です。


コントロールの単なる表示例なので、左の枠の項目(ロードマップコントロール)を選択しても機能しません。

「Close dialog」ボタンをクリックすると終了します。

make UnoDialogSample2.run

ロードマップコントロールの使用例です。


ロードマップコントロールとは左側の枠の部分です。

左の枠の項目を選択すると右側の枠の表示が変化します。

この例だけは後ろにWriterのドキュメントが表示されており、「Close」ボタンをクリックしてもそのドキュメントは表示されたままです。

make UnoMenu.run

メニュー付きウィンドウを表示させる例です。


メニュー項目にはチェックボックス、ラジオボタンもあります。

Fisrt MenuBar Item→Close Dialog、で終了します。

make UnoMenu2.run

右クリックメニューの例です。

ポップアップメニューと呼ばれています。


Right-click hereという文字列を右クリック→Close Dialogで終了します。

make ImageControlSample.run

ダイアログに画像を表示させる例です。


Close dialogで終了します。

Javaの例:GUIをNetBeansで実行する


LibreOffice5(36)UNOコンポーネントのJavaの例:TestJavaComponentと同様にしてNetBeans8.0.2のプロジェクトにできました。

プロジェクト名はGUIとしました。

ImageControlSampleの例はPlease pass a parameter denoting the system path to your graphic!と言われてダイアログは表示されません。

この例では実行時にoologo.gifを引数に渡さないといけません。

NetBeansのプロジェクトに引数を渡すには引数を渡したいクラスをプロジェクトのメインクラスに設定しないといけません。

プロジェクトエクスプローラでプロジェクトGUIを選択して右クリック→プロパティ。


カテゴリ、から実行を選択しメインクラスにImageControlSampleを選択します。

引数にoologo.gifへの絶対パス/opt/libreoffice5.2/sdk/examples/DevelopersGuide/GUIを入力しました。

相対パスの./oologo.gifでは画像が読み込まれませんでした。

NetBeansのメニューから実行→プロジェクト(GUI)を実行、で実行できました。

エディタ画面から、右クリック→ファイルの実行、では引数が渡されません。

makefileに載っていない例: SystemDialog.java


NetBeansにGUIの例のソースを読み込んだときにmakefileに載っていない例SystemDialog.javaがあるのに気が付きました。

104行目でエラーがでていますがこれはその前の行のshortをShortに直すとエラーが消えました。

エラーが消えましたが実行するとエラーがでてきます。
run:
Connected to a running office ...
com.sun.star.lang.DisposedExceptionnull
com.sun.star.lang.DisposedException
 at com.sun.star.lib.uno.environments.remote.JobQueue.removeJob(JobQueue.java:198)
 at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:316)
 at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:289)
 at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:81)
 at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:618)
 at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:145)
 at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:129)
 at com.sun.proxy.$Proxy2.createInstanceWithContext(Unknown Source)
 at SystemDialog.raiseSaveAsDialog(SystemDialog.java:83)
 at SystemDialog.main(SystemDialog.java:67)
Caused by: java.io.EOFException
 at java.io.DataInputStream.readInt(DataInputStream.java:392)
 at com.sun.star.lib.uno.protocols.urp.urp.readBlock(urp.java:367)
 at com.sun.star.lib.uno.protocols.urp.urp.readMessage(urp.java:98)
 at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge$MessageDispatcher.run(java_remote_bridge.java:92)
ビルド成功(合計時間: 3秒)
83行目のcom.sun.star.ui.dialogs.FilePickerをインスタンス化するときにエラーがでていました。

解決法はPythonに変換してから考えることにします。
(2017.8.11追記。原因がわかりました。FilePickerサービスをオートメーションでインスタンス化するとエラーになるようです。)

参考にしたサイト


LibreOffice 5.3 SDK - Developer's Guide Examples
このJavaの例のGUIを実行しました。

次の関連記事:LibreOffice5(55)Javaの例:GUIをPythonにする その1

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ