Java Drawing DrawTop

Language

JP  US  UK

 

前書き

 H. Jyounishi, Tokyo Japan
 

Frame (Index), No frame                 version:0.3(latest)  

このページ: バージョンアップ, ダウンロード, 動機, 実装方法 , 参考資料, 他のアプリケーションとのデータ交換, 連絡先

1. バージョンアップ

現在最新 version 0.3 =>変更履歴


2.ダウンロード
(1) ダウンロードファイル : jar, src, images, サンプル図形データなど一式 (zipファイル)
=> DrawTopFile0_3_20180513.zip , DrawTopFile0_3_20161020.zip

内容

説明

DrawTop API

フォルダの内容

DrawTopFile0_1_yyyymmdd
フォルダ
drawdata0.1 フォルダ ErrorRecods フォルダ

 

drawData0.1

サンプル図形データを格納したフォルダ。このドキュメントを書くために使った図形データの一部を収めてある。

ダウンロード後に試運転するときは、DrawTop.jarと同じフォルダに置いてDrawTop.jarを起動する。自分で作成した図形データのフォルダはどこにおいても良いし、もちろんフォルダ名も自由である。

ErrorRecords このフォルダは通常存在しない。System.errがエラーメッセージを出力したときに、このフォルダが作られエラーメッセージがErrorfile_yyyymmdd_hhmmss.txtファイルに出力される。ここでyyyymmdd と hhmmssは日付と時刻。

images

メニューボタン等に貼り付けるイメージのフォルダ。DrawTop.jarと同じフォルダに置く。

src ソースコード一式

Application.config

読み込む図形データファイルのディレクトリ情報を書き込んだファイル。

DrawTop.jarと同じフォルダに置く。

ComponentLibrary

部品ライブラリのファイル。DrawTop.jarと同じ フォルダに置く。

DrawTopX_Y
_yyyymmdd.jar

実行モジュール。X_Yはバージョン番号。yyyymmddはリリース日付。


(2) 実行方法

上記ファイルをダウンロードし、DrawTopX-Y.jarをダブルクリックすれば起動できる。
起動後、Homeタブのopenボタンを押してdrawFileVer0.1の中の図形データファイルを開けば、この資料を書くために作成したサンプル図形が表示され、それに対して操作もできる。


(3) 動作OS : Windows XP, Vista, Windows 7


(4) Windows 7でのトラブル

Windows 7ではjarファイルをダブルクリックしても、"Could not find the main class:"のエラーメッセージが出て実行できないことがあろ。
解決法=>Windows 7でのjarファイルの実行



3.開発の動機 戻る=>page top

このセクションは、Javaプログラミングの練習のために試作したコンパクトなDrawing toolの仕様・実現方法を説明することが目的です。試作したコードはコメント、空白行を除き35,000ステップほどです。操作性は市販ソフトと同等で、左欄の目次を見てもらえれば分かるように、良く使われる機能は一通り実現しています。またCPU性能が大幅に向上したにもかかわらず、現在のdrawing toolがそれほど進歩していないと感じています。そこで有り余るCPUパワーを使って、何ができるかを検討しました。例えば次の機能は、計算量の多い処理(曲線間交点計算、曲線への最短点計算など)をリアルタイムで実行し、ダイアグラム、フローチャート等を作成するための作業量を大幅にへらすことができます。

 

(1) リアルタイム自動整列

図形をマウスドラッグで移動またはリサイズしている最中に隣の図形とある誤差範囲で整列すると、その整列状態を点線で表示しマウスボタンを離すと誤差ゼロで整列させる機能(auto_align例題-1)。

(2) 接続点表示とコネクター

マウスを図形に近づけるとマークを表示し、その位置でマウスをクリックしたり、マウスドラッグを開始したり終了させると、直線/折れ線/曲線の始点、終点を正確に図形上に定義できる機能(図形上の点の選択 )。この機能はコネクターを作成するために非常に有用である。あらかじめ接続点を作成する必要もないし、図形の境界上のどこにでも接続できる。

(3) 新しい機能を持つコネクター

図形境界の任意の点に接続でき、また1つの図形に何本でも接続できるコネクター(コネクター例題-1)。またコネクターにコネクターを何段でも接続できる機能(例題1.3)。図形を移動/リサイズしたとき、それに接続するx方向、y方向コネクターの方向を変えない機能など(Auto trackingオプション)。この機能はコネクターの延長線と図形の交点計算をリアルタイムで実行することで実現される。


上記機能などをテストするには、ファイルをダウンロードし、jarファイルを起動してもらうだけです。操作説明書を書くために作成したサンプル図形もついてますので、すぐにテストできます。 =>ダウンロード


上記(1),(2),(3)の操作ビデオ


video.html


4.実装方法 戻る=>page top
上記(1)、(2)の実装方法について述べる。

(1) マウス位置モニター

Drawing toolではマウスが図形のどこに位置しているかを知ることが重要である。この処理を実行するために、マウスが動くたびにマウスが表示中の図形にヒットしているか否かをリアルタイムで計算する。ここで"ヒット"とはマウスがある図形の上にあるか、非常に接近していることをいい、また表示中の図形とは、図形要素、テキスト領域、および補助図形(選択ボックス、リサイズハンドル、曲線の始終点、節点、接線方向)などである。
=>機能仕様書 マウス位置モニター


図形が閉図形の場合は、java.awt.Shapeのcontainsメソッドを使って図形の外側、内側、境界上のどこに位置しているかを簡単に判定できる。しかしこれだけでは不十分なので、マウス位置から図形境界線への最短点計算や、方向を指定した最短点計算(射影点計算)を使う。これらの計算を行なうためには、次のように図形の境界線をパラメトリック曲線で表す方法が有利である。

=>機能仕様書 幾何計算ライブラリー


(2) パラメトリック曲線

パラメトリック曲線を使えば、図形の境界線上の点を図形境界線のパラメトリック曲線データと、点の位置を指定する曲線パラメータの組み合わせで表現できる。この方法を使うと、図形に移動、リサイズ、変形などの操作を施しても、点が図形境界線からずれるといった問題が起きないため様々な処理を単純化できる。このメリットを生かすためjava.awt.geomの図形をパラメトリック曲線に拡張した。
=>機能仕様書 パラメトリック曲線



5. 他のアプリケーションとのデータ交換 戻る=>page top

図形もテキストも最低限のデータ交換はできる。
HTMLやPDFなど画像でデータ交換しなければならないアプリケーションには十分役に立つ。


データ データ交換

操作

図形 他のアプリケーションから 他のアプリケーションで図形をクリップボードにコピーした後に、本アプリケーションでペーストすると、画像データで貼り付けられる。
他のアプリケーションへ

同上 =>図形の編集 (カット/コピー & ペースト)

テキスト 他のアプリケーションから 他のアプリケーションでテキストをクリップボードにコピーした後に、このアプリケーションでペーストすると、属性のないテキスト(デフォールトフォント、デフォールトサイズ、色属性などなし)で貼り付けられる。
他のアプリケーションへ 同上


6.参考資料 戻る=>page top
Javaの勉強をするために、次の資料を参照させていただきました。文献(4)はプログラミング技術には直接関係しませんが、 Javaを理解するには有益でした。

No

資料名

コメント

1

Java examples (example source code) Organized by topic

http://www.java2s.com/Code/Java/CatalogJava.htm

簡単で例題が豊富なのが良い。コードの説明はない。

2

The Java Tutorials
The Swing Tutorial

http://java.sun.com/docs/books/tutorial/uiswing/index.html

例題は結構難しいのでNo2との併用が良い。

3 Comparing Observed Bug and Productivity Rates for Java and C++ http://www.lanl.gov/projects/CartaBlanca/webdocs/PhippsPaperOnJavaEfficiency.pdf
プログラミング言語の比較で定量的な議論をしている。この文献はプログラミングの過程をトレースし、バグ発生率、バグフィックスに要した時間などを比較している。


7.連絡先 戻る=>page top

ドキュメントの不備、バグ、意見など。

メール:mail@627utech.com H. Jyounishi, Tokyo Japan



Copyright (c) 2009-2013
All other trademarks are property of their respective owners.