SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(WebCharts3D)

グラフを表示するJavaクライアントアプリケーションを作る-Part2

WebCharts3D 5.2Jでデータをグラフ化するJavaアプリケーションの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (8.6 KB)

実行時にグラフを3D表示にする

 WebCharts3Dコントロールは、プログラム実行時に一部のプロパティの値を変更するだけでチャートの表示を動的に変更させることができます。

 これは、グラフの元データとなる元モデルオブジェクトを作成し直さずに、プロパティ値の変更だけでチャートのモデルを動的に更新させる機能を持っているためです。

 ためしに、フレームにチェックボックスを追加し、チェックするとその場でグラフの表示を3D化したものに変更する機能を組み込んでみます。

最初は2Dのグラフが
最初は2Dのグラフが
チェックボックスをクリックすると3D化する
チェックボックスをクリックすると3D化する

宣言の変更

 この処理は、チェックボックスのイベントリスナーであるitemStateChangedメソッドから、WebCharts3Dコントロールの各オブジェクトを操作します。従って、いくつかのオブジェクトを、クラス「drawpanel」のメンバ変数にする必要があります。

 また、JCheckBoxクラスのインスタンスを作成し、パネルに組み込む処理も行います。

1

 クラス「drawpanel」の定義に、イベントリスナー「ItemListener」を追加します。

class drawpanel extends JPanel implements ActionListener, ItemListener{	
2

 メソッド「addChart」で、「MxComponent」クラスを宣言と同時にインスタンス化していたのを、宣言をメンバ変数の宣言に切り替えます。

 また、メソッド「getWidgetStyle」で宣言と同時にインスタンス化していた「MxFrameChartStyle」クラスの宣言も、メンバ変数の宣言に切り替えます。

3

 JCheckBoxクラスの宣言を追加します。 

修正後のコード
class drawpanel extends JPanel implements ActionListener, ItemListener{	
	private static final long serialVersionUID = 1L;
	JButton button1;
	JPanel pnl1;
	
	JCheckBox check1;
	MxFrameChartStyle style;
	MxComponent chart;

private void addChart(javax.swing.JPanel panel) {
	chart = new MxComponent();
	...
	...
}

private MxWidgetStyle getWidgetStyle() {
	style = new MxFrameChartStyle();	
	...
	...
}

チェックボックスを作成する

 コンストラクタの中で、チェックボックスを作成します。イベントリスナーを関連付けるのを忘れないでください。

// チェックボックスの作成
check1 = new JCheckBox("3D表示");
check1.setSelected(false);
check1.addItemListener(this);

 作成したら、ボタンの後にパネルに組み込みます。

this.add(check1);

 そして、イベントリスナーのメソッド「itemStateChanged」を作成します。

public void itemStateChanged(ItemEvent e) {

 メソッド内では、チェックボックスがチェックされているかどうかを調べ、チェックされていれば「MyChartStyle」クラス(MxFrameChartStyleクラスが継承しているクラス)のフィールド「is3D」をtrueにします。

 そして、MxComponentクラスを対象にrepaintメソッドを実行すると、グラフが新しい設定で再描画されます。

if(e.getSource()==check1){
	if(check1.isSelected()==true){
		style.is3D = true;
		chart.repaint();

 チェックがはずされたときはこの逆で、フィールド「is3D」をfalseにしrepaintメソッドを実行します。

		}else{
			style.is3D = false;
			chart.repaint();
		}
	}
}

まとめ

 今回は、グラフの元データをxml標準形式のファイルから読み込んでグラフを作成しました。Excelのxml形式がそのまま利用できればアプリケーションの使い勝手もよくなるのですが、Excelの仕様なので仕方ありません。

 それでも、VBAを使ってワークシートのデータを、WebCharts3Dコントロールのxml形式に作り直すようなマクロを作れば、ExcelのデータをJavaのアプリケーションで読み込んでグラフ化できます。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ComponentZine(WebCharts3D)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2931 2008/08/28 17:57

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング