チュートリアルで試せる内容

1)作成する処理モジュールの仕様を決めます

2)SampleDisplay2.java を利用して,モジュール作成の準備をします

3)AllKeywords.java を編集し,プログラム作成の準備をします

コンストラクタの記述の修正

	public AllKeywords()
	{
		setModuleID(9978);	// Set your module ID after you have got it
		dataNumbers = new int[]{0,0,0,0,    // b,i,d,S
			0,0,0,0,    // bA,iA,dA,SA
			0,0,0};     // bA2,iA2,dA2
		setToolType(1);	
	}

4)一度コンパイルして,AllKeywordsモジュールの動作を確認します

5)キーワードの一覧を表示するプログラムを作成します

セルのサイズに関する変数を,グローバル領域で宣言します

	int xNumber;(横のセルの数)
	int yNumber;(縦のセルの数)
	int cellX;(横のセルのサイズ)
	int cellY;(縦のセルのサイズ)

drawData() 内でセルの表示,およびキーワードを表示する処理を記述します

	public void drawData(Graphics2D g2)
	{
		xNumber = sizeX/100;
		yNumber = sizeY/20;
		
		cellX = sizeX/xNumber;
		cellY = sizeY/yNumber;
		
		g2.setColor(Color.white);		
		
		for(int i=0;i<xNumber;i++)
			g2.drawLine(cellX*i,0,cellX*i,sizeY);
		
		for(int i=0;i<yNumber;i++)
			g2.drawLine(0,cellY*i,sizeX,cellY*i);
		
		g2.setFont(new Font("Dialog", Font.BOLD, 20));
		for(int i=0;i<yNumber;i++)
			for(int j=0;j<xNumber;j++)
			{
				if(i*xNumber+j == text.keywordNumber)
					return;
				
				g2.drawString(text.keyword[i*xNumber+j].word, j*cellX, (i+1)*cellY);
			}
	}

6)マウスで触っているキーワードをハイライトする処理を追加します

クラスの定義を修正します

	public class AllKeywords extends VisualizationModule implements MouseMotionListener

マウスの座標,触っているキーワードに関する変数を,グローバル領域で宣言します

	int mouseX;
	int mouseY;
	int lastTouchedKeywordNumber;
	int touchedKeywordNumber;

初期化用のメソッドを用いて,マウスモーションリスナーを追加、変数を初期化します

	public void initializePanel()
	{
		addMouseMotionListener(this);	//MouseMotionListener	
	}
	public void initializeData()
	{
		lastTouchedKeywordNumber = -1;
		touchedKeywordNumber = -1;
	}

マウスモーションリスナー用のメソッドをオーバーライドして,マウスで触ったキーワードを特定します

	//MouseMotionListener
	public void mouseDragged(MouseEvent me){}	
	public void mouseMoved(MouseEvent me)
	{
		mouseX = me.getX();
		mouseY = me.getY();
	
		touchedKeywordNumber = (mouseX/cellX) + (mouseY/cellY) * xNumber;
	
		if(touchedKeywordNumber != lastTouchedKeywordNumber)
		{
			lastTouchedKeywordNumber = touchedKeywordNumber;
			repaint();
		}
	}

マウスで触ったキーワードをハイライトする処理を追加します

	public void drawTouched(Graphics2D g2)
	{
		if(touchedKeywordNumber >= 0 && touchedKeywordNumber < text.keywordNumber)
		{
			g2.setColor(Color.yellow);
			g2.drawString(text.keyword[touchedKeywordNumber].word, 
				(touchedKeywordNumber%xNumber)*cellX, (touchedKeywordNumber/xNumber+1)*cellY );
		}
	}
	//////////paint
	public void paintComponent(Graphics g)
	{
		Graphics2D g2 = (Graphics2D)g;
		
		getPanelSize();	
		
		drawBackground(g2);//background
		drawData(g2);
		
		drawTouched(g2);
	}

7)他の可視化モジュールと連動させるフォーカス連動処理を記述します

	public void mouseMoved(MouseEvent me)
	{
		mouseX = me.getX();
		mouseY = me.getY();
	
		touchedKeywordNumber = (mouseX/cellX) + (mouseY/cellY) * xNumber;
	
		if(touchedKeywordNumber != lastTouchedKeywordNumber)
		{
			text.focus.mainFocusKeyword = touchedKeywordNumber;
			repaintOthersByTouch();
			lastTouchedKeywordNumber = touchedKeywordNumber;
			repaint();
		}
	}

8)他の可視化モジュールからの連動を可能にする処理を記述します

	public void displayOperations(int optionNumber)
	{
		switch(optionNumber)
		{
			case 0:
				repaint();
				break;
			case 4501:
				touchedKeywordNumber = text.focus.mainFocusKeyword;
				repaint();
				break;
		}		
	}

9)他の処理モジュールと連動させるフォーカス連動処理を記述します

クラスの定義を修正します

	public class AllKeywords extends VisualizationModule implements MouseMotionListener, MouseListener

初期化用のメソッドを用いて,マウスリスナーを追加します

	public void initializePanel()
	{
		addMouseMotionListener(this);	//MouseMotionListener
		addMouseListener(this);	//MouseListener		
	}

マウスリスナー用のメソッドをオーバーライドして,マウスをクリックしたときに連動する処理を記述します

	//MouseListener
	public void mousePressed(MouseEvent me){}	//Press
	public void mouseReleased(MouseEvent me){}	//Release
	public void mouseEntered(MouseEvent me){}	//Enter an area
	public void mouseExited(MouseEvent me){}	//Exit an area
	public void mouseClicked(MouseEvent me)	//Click
	{
		if(touchedKeywordNumber >= 0 && touchedKeywordNumber < text.keywordNumber)
			executeOthersByClick();			
	}

10)コンパイルして動作を確認します


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS