2013年4月30日火曜日

JavaFXでGUIつくる

GUIがつくりたい。
C#も良さそうだけど、Javaでやりたい!!

ということで、javaFXを使ってみる。

ずっとEclipse派でしたが、JavaでGUIのツールを
作ろうとするとNetBeansが有利みたいなのでNetBeansにて。

目標はコマンドラインから使ってるプログラムのGUIをつけて
誰でも使いやすくすること。

・NetBeansのダウンロード
http://ja.netbeans.org/


・NetBeansを利用して、JavaFXプロジェクトを作成する。
https://netbeans.org/kb/docs/java/javafx-setup_ja.html


・チュートリアルを読む。
http://docs.oracle.com/javafx/

JavaFXを使う上で重要なこと。

1.The main class for a JavaFX application extends the javafx.application.Application class.
The start() method is the main entry point for all JavaFX applications.

JavaFXのmainクラスはjavafx.application.Applicationクラスを継承し、start()メソッドは全てのJavaFXアプリケーションのエントリーポイントになる。

represent
2.A JavaFX application defines the user interface container by means of a stage and a scene. The JavaFX Stage class is the top-level JavaFX container. The JavaFX Scene class is the container for all content. Example 1-1 creates the stage and scene and makes the scene visible in a given pixel size.

JavaFXアプリケーションはstageとsceneによって、ユーザインターフェイスを定義します。
stageクラスはJavaFXのトップレベルコンテナです。seeneクラスは全てのコンテンツのコンテナです。
例1-1(Hello World!)では、stageとsceneを作成し、していたピクセルサイズのシーンを表示します。

In JavaFX, the content of the scene is represented as a hierarchical scene graph of nodes. In this example, the root node is a StackPane object, which is a resizable layout node. This means that the root node's size tracks the scene's size and changesrepresent when the stage is resized by a user.

JavaFXでは、シーンのコンテンツ(内容)はnodeの階層的なsceneグラフとして表されます。
例では、ルートノードはサイズ変更可能なノードであるStackPaneオブジェクトです。この意味は、ルートノードサイズは、ユーザがサイズ変更したステージ上のシーンのサイズ変更に追随するということです。

The root node contains one child node, a button control with text, plus an event handler to print a message when the button is pressed.

ルートノードは、一つの子ノードが含んでいます。それはプラスボタンを押すと、メッセージを表示するイベントハンドラを含む、テキストのボタンコントロールです。

The main() method is not required for JavaFX applications when the JAR file for the application is created with the JavaFX Packager tool, which embeds the JavaFX Launcher in the JAR file. However, it is useful to include the main() method so you can run JAR files that were created without the JavaFX Launcher, such as when using an IDE in which the JavaFX tools are not fully integrated. Also, Swing applications that embed JavaFX code require the main() method.

mainメソッドは、JavaFXのランチャーを埋め込むJavaFXパッケージツールを使用して作成されたとき、JavaFXアプリケーションに
必要ありません。ただし、完全にJavaFXツールが統合されていないIDEを使用する場合などの
JavaFXランチャーなしで作成されたJarファイルを実行出来るように、もしくはJavaFXをSwingアプリケーションに
埋め込みたい場合には、mainメソッドが有用です。

ここまででEclipseを使っていれば、NetBeansの学習コストはほとんど0でしてぐんぐん進めます。

次に、以下の記事が参考になります。

http://itpro.nikkeibp.co.jp/article/COLUMN/20120731/413043/?ST=develop&P=7

FXMLの一番簡単な導入が出来ます。
次に、FXMLをGUIで簡単に設定したくなるので、JavaFX Scene Builderを導入する。

http://www.oracle.com/technetwork/java/javafx/tools/index.html

このScene Builderの担当部分はViewで、モデルとコントローラは自作します。
ただし、Viewとコントローラの関連付けはアノテーションで書くだけです。

後は、TaskとThreadの使い方がわかれば、基本的なアプリケーションが割りと簡単に出来ます。


流れとしては以下のような感じです。


①NetBeansからJavaFX Scene Builderを起動して、おおまかにUI部品を配置。

②FXMLを編集してfx:idとアクションに対するメソッドを記述。

③fx:idに対する変数とメソッドを@FXMLアノテーションを使って記述。

④非同期処理はTaskとThreadで記述。


コードが整理出来たらGithubしよっと。

2013年4月22日月曜日

数式処理システム

おもしろく素晴らしい処理システム。
実用にいたるには、利用出来るところまでデータを取得、整理する必要がある。
認識技術を駆使して到達出来ないか。


・SAGE

http://www.sagemath.org/


・MATHMATICAのWEB版

http://www.wolframalpha.com/



2013年4月15日月曜日

viで置換する


文字列置換


:s/[old]/[new]

  1. [old]を[new]に置換する現在行の最初の old を new に置換する :s/old/new
  2.  現在行の全ての old を new に置換する :s/old/new/g
  3.  2つの # 間で語句を置換する :#,#s/old/new/g
  4.  ファイルの中の全ての検索語句を置換する: :%s/old/new/g
  5.  'c' を加えると置換の度に確認を求める :%s/old/new/gc