Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

JFXtras 2プロジェクトとは?

2013年12月の現在からすると1年半前のエントリーですので内容が古いです。
jfxtras-labs-2.2-r6-20131206.180346-19.jarは
ビルド済みの物をダウンロードしたほうが早いです。
https://oss.sonatype.org/content/repositories/snapshots/org/jfxtras/jfxtras-labs/2.2-r6-SNAPSHOT/
jfxtras-labs-2.2-r6-20131206.180346-19.jarをクラスパス設定するとClockGauge_JFXtras.javaコンパイルして試すことは現在でもできます。

以下の記事内容は古いです。
JFXtrasプロジェクトへようこそがJFXtrasプロジェクトのサイトです。
JavaFX 2.xの高品質のコントロールおよびアドオンのセットとタイトルと共に説明がありますね。
Webstartで試す事ができます。

JFXtrasプロジェクトのサイトではこのように説明されています。
プロジェクトは異なる2つの部分に分割されます。
公式”JFXtras library”のコンポーネントは将来のリリースでも変更の少ないAPIで安定していると考えられます。
” JFXtras Labs”は活発に開発中の状態に現在あり実験的なコンポーネントも含んでいます。

GitHubよりダウンロードしてみるとわかるんですが6月30日現在安定版のJFXtras libraryはまだ出ていないです。
一方、” JFXtras Labs”は最新のソースをこのJFXtras / jfxtras-labs GitHubよりダウンロードしてビルドする事ができます。
6月30日現在ダウンロードして展開すると”JFXtras-jfxtras-labs-d531c07”になってます。

以下はMac OS Xでのビルドの方法です。

1 build.gradleファイルの修正
  1行目から15行目が以下のようになってます。

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'signing'
apply plugin: 'eclipse'
apply plugin: 'idea'

buildscript {
    final javafxHome = System.env['JAVAFX_HOME']
    if (javafxHome) {
      ext.javafxJar = "${javafxHome}/rt/lib/jfxrt.jar"  //10行目
    } else {
      final javaHome = System.env['JAVA_HOME']
      if (javaHome)
        ext.javafxJar = "${javaHome}/jre/lib/jfxrt.jar"
    }

buildscript の部分では”JAVAFX_HOME”を設定してあるならjfxrt.jar の在処は”${javafxHome}/rt/lib/jfxrt.jar”で”JAVAFX_HOME”の設定がないのなら"${javaHome}/jre/lib/jfxrt.jar"となってます。
しかしMac OS XではJdk7u5を使っていても開発中のJdk7u6 betaを使っていてもjfxrt.jar の在処は”JAVAFX_HOME”を設定してある場合には”${javafxHome}/jre/lib/jfxrt.jar”です。
(.cshrcに設定するなら
jdk1.7.0_06.jdkの場合
setenv JAVAFX_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home

またMac OS Xではjfxrt.jar”がJDKに内蔵されているためjavafxHomeとjavaHomeは同じでなので"${javaHome}/jre/lib/jfxrt.jar"でも中身は同じです。
従って10行目の"${javafxHome}/rt/lib/jfxrt.jar"の"rt"は"jre”に修正してext.javafxJar = "${javafxHome}/jre/lib/jfxrt.jar"とします。
2 ターミナルでJFXtras-jfxtras-labs-d531c07ディレクトリへ移動。
3  ./gradlew build

以下のように表示されればビルド成功です。
:processTestResources UP-TO-DATE
:testClasses
:test
:check
:build

BUILD SUCCESSFUL

Total time: 1 mins 34.957 secs

JFXtras-jfxtras-labs-d531c07/build/libs/に
JFXtras-jfxtras-labs-d531c07-0.2-SNAPSHOT.jarが作成されています。
4 クラスパスの設定をします
  次回以降の”クラスパス設定変更”の手間を省くため”JFXtras-jfxtras-labs_new_JAR”というようなビルドした最新のjarを保管するためのフォルダを作成。
JFXtras-jfxtras-labs-d531c07-0.2-SNAPSHOT.jarを保管するためのフォルダにコピーした後で名前を共通したものするため”JFXtras-jfxtras-labs-0.2-SNAPSHOT.jar”などのように変更。
.cshrcにクラスパス設定を追加
setenv CLASSPATH ${CLASSPATH}:/Users/hshino/Downloads/JFXtras-jfxtras-labs_new_JAR/JFXtras-jfxtras-labs-0.2-SNAPSHOT.jar
有効化
source ~/.cshrc
(これはそれぞれの環境に合わせて変更してください)
5 これで最新の”jfxtras-labs”が使えます。
  早速試してみましょう。
以下のコードをコンパイルして実行してみてください

ClockGauge_JFXtras.java

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import jfxtras.labs.scene.control.gauge.Clock;
import jfxtras.labs.scene.control.gauge.ClockBuilder;

/**
 * Clock.
 *
 * @see jxftras.labs.scene.control.gauge.Clock
 */

public class ClockGauge_JFXtras  extends Application {

   public static void main(String[] args) {
                launch(args);
  }
 
  @Override
  public void start(Stage primaryStage) {

        // Create some controls
	 Clock clockTokyo = ClockBuilder.create()
		.timeZone("Asia/Tokyo")
		.secondPointerVisible(true)
		.autoDimEnabled(true)
		.daylightSavingTime(false)
		.theme(Clock.Theme.BRIGHT)
		.clockStyle(Clock.ClockStyle.IOS6)
		.brightBackgroundPaint(Color.web("#0000FF", 0.5))
	//    .darkBackgroundPaint(Color.WHITE)
		.darkTickMarkPaint(Color.ORANGE)
		.brightPointerPaint(Color.YELLOW)
	 //   .darkPointerPaint(Color.web("#0000FF", 0.5))
		.secondPointerPaint(Color.RED)
		.running(true)
		.build();

         clockTokyo.setPrefSize(120, 120);
       
         Clock clockEst  = ClockBuilder.create()
	         .timeZone("EST")
		 .secondPointerVisible(true)
		 .autoDimEnabled(true)
		 .daylightSavingTime(true)
		 .theme(Clock.Theme.BRIGHT)
		 .clockStyle(Clock.ClockStyle.IOS6)
		 .brightBackgroundPaint(Color.web("#0000FF", 0.7))
	   //  .darkBackgroundPaint(Color.web("#0066FF", 0.3))
		 .darkTickMarkPaint(Color.ORANGE)
		 .brightPointerPaint(Color.YELLOW)
	  //   .darkPointerPaint(Color.web("#5500FF", 0.8))
		.secondPointerPaint(Color.RED)
		.running(true)
	        .build();

        clockEst.setPrefSize(120, 120);
	
        Clock clockCet  = ClockBuilder.create()
	          .timeZone("CET")
		  .secondPointerVisible(true)
		  .autoDimEnabled(true)
		  .daylightSavingTime(false)
		  .theme(Clock.Theme.BRIGHT)
		  .clockStyle(Clock.ClockStyle.IOS6)
		  .brightBackgroundPaint(Color.web("#0000FF", 0.5))
	     //  .darkBackgroundPaint(Color.WHITE)
		  .darkTickMarkPaint(Color.web("#0066FF", 0.5))
		  .brightPointerPaint(Color.YELLOW)
	  //    .darkPointerPaint(Color.web("#0066FF", 0.5))
		  .secondPointerPaint(Color.RED)
		  .running(true)
		  .build();

        clockCet.setPrefSize(120, 120);
	
        Clock clockNz = ClockBuilder.create()
	           .timeZone("NZ")
		   .secondPointerVisible(true)
		   .autoDimEnabled(true)
		   .daylightSavingTime(false)
		   .theme(Clock.Theme.BRIGHT)
		   .clockStyle(Clock.ClockStyle.IOS6)
		   .brightBackgroundPaint(Color.web("#0000FF", 0.3))
	     //  .darkBackgroundPaint(Color.WHITE)
		   .darkTickMarkPaint(Color.ORANGE)
		   .brightPointerPaint(Color.YELLOW)
	    //    .darkPointerPaint(Color.web("#0000FF", 0.5))
		   .secondPointerPaint(Color.RED)
		   .running(true)
		   .build();

        clockNz.setPrefSize(120, 120);
	
	Text tokyo = new Text("東 京");
      //  tokyo.setFill(Color.WHITE);
        tokyo.setFont(new Font(24));
	tokyo.setFill(Color.GOLDENROD);

        Text est = new Text("New York");
       // est.setFill(Color.WHITE);
        est.setFont(new Font(20));
	est.setFill(Color.BLUE);
	
        Text cet = new Text("Berlin");
      //  cet.setFill(Color.WHITE);
        cet.setFont(new Font(22));
	cet.setFill(Color.ORANGE);
	
        Text nzst = new Text("Wellington");
      //  nzst.setFill(Color.WHITE);
        nzst.setFont(new Font(20));
	nzst.setFill(Color.YELLOW);

        StackPane stack = new StackPane();
        Rectangle background = new Rectangle(720, 280);
        background.setFill(Color.web("#0000FF", 0.5));
        stack.getChildren().add(background);

        // Layout
        final GridPane pane = new GridPane();
        pane.setPadding(new Insets(5));
        pane.setHgap(5);
        pane.setVgap(5);
        pane.setAlignment(Pos.TOP_CENTER);

        // Add controls to the layout
	
	pane.add(clockTokyo, 1, 1);
	 pane.add(tokyo, 1, 2);
	 GridPane.setHalignment(tokyo, HPos.CENTER); 
     
        pane.add(clockEst, 2, 1);
        pane.add(est, 2, 2);
        GridPane.setHalignment(est, HPos.CENTER);
	
        pane.add(clockCet, 3, 1);
        pane.add(cet, 3, 2);
        GridPane.setHalignment(cet, HPos.CENTER);
	
        pane.add(clockNz, 4, 1);
        pane.add(nzst, 4, 2);
        GridPane.setHalignment(nzst, HPos.CENTER);

        stack.getChildren().add(pane);
      
        Group g = new Group(); 

        g.getChildren().add(stack);
	
	primaryStage.setScene(new Scene(g, 720, 280));
        primaryStage.show();
    }

  }

設定と微妙に合わないのですが中々面白いです。