[Work/Class/Java with Processing/4_SwingInProcessing]

アート系学生のためのJAVA with Processing - その4-1 Swing GUIライブラリの基礎

導入

Processingを実行しているJavaには,SwingというGUIのためのライブラリがある.Swingは完全なオブジェクト指向GUIライブラリである.

コード

//SwingInProcessing_Basic.pde
// Import Using Libraries
// 必要なライブラリを読み込む処理
import processing.awt.*;
import java.awt.*;
import javax.swing.*;

// macOSのJavaのProcessing最新版はこれでうまくいかないこともあるので
// processing.awt.PSurfaceAWT.SmoothCanvas;
// も追加

void setup(){
  size(640, 480);
  // Getting Processing Canvas
  // Processingで使われているCanvasという表示領域を取得する
  Canvas canvas = (Canvas)surface.getNative();

  // macOSのJavaのProcessing最新版はこれでうまくいかないこともあるので
  // SmoothCanvas canvas = (SmoothCanvas)getSurface().getNative();
  // で置き換える

  // 今は覚えなくて良い: 
  // Processing3の描画機能類は
  // PSurfaceインタフェースを実装したクラスのsurfaceというオブジェクトに
  // に追加された,PAppletクラスを使って定義されている.(?)
  // このPAppletをextendsして作るのが,ユーザが実際に書いているsketch.

  // Window pane
  // ペインとは,Processingでは自動的に作られるWindowの中の「表示領域」である.
  JLayeredPane pane = (JLayeredPane)canvas.getParent().getParent();

  // 今は覚えなくても良い: 
  // JLayeredPaneはCanvasが貼り付けられている親の親である
  // Processing3の構成は,
  // PApplet継承クラス(sketch)に含まれるCanvas→JPanel→JLayeredPane→JRootPane→JFrame
  // という貼り付けの親子関係にある.

  // JLayeredPaneクラスの詳細は以下
  // http://docs.oracle.com/javase/jp/7/api/javax/swing/JLayeredPane.html

  // Generate Text Field Object
  // Swing GUI部品のテキスト領域クラスであるJTextFieldのオブジェクトを作る
  JTextField textField = new JTextField("New Text Field");

  // Set Bounding and Size of the Text Field Object
  // TextFieldオブジェクトの表示位置とサイズを決める
  // (Pane中の左上から10px, 上から360pxの位置に,幅620px, 高さ20pxのサイズで)
  textField.setBounds(10, 360, 620, 20);

  // Add the Text Field into Window Pane
  // 生成,設定したテキストフィールトオブジェクトをPaneに追加する
  pane.add(textField);
}

void draw(){
  // Draw Processing Primitive Objects for test
  // 表示テストのために,Processingのプリミティブなオブジェクトを原点に表示してみる.
  ellipse(0,0,100,100);
}
SwingInProcessing_Basic.pdeの実行結果.テキストフィールドが表示されている.