⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 biorhythmcanvas.java

📁 J2ME核心类及MIDlet类 MIDP用户界面对象 图形处理及低级事件处理 多线程编程 I/O及网络编程 数据库RMS编程 浮点数编程 多媒体及GAME API编程 安全、加密及
💻 JAVA
字号:

import java.util.Date;
import javax.microedition.lcdui.*;


class BiorhythmCanvas extends Canvas
{

	Date today = new Date();

	Date birthday = new Date( today.getTime() - 100 * msperday ); ;

	Date leftday = new Date( today.getTime() - days/2 * msperday );

	public static int days = 22;
	public static long msperday = 24L*60*60*1000L;

	public void setBirthday( Date birthday )
	{
		this.birthday = birthday;
		if( birthday != null )
			repaint();
	}

	
    public void paint(Graphics g)
    {
		if( birthday == null ) return;

        int kx = getWidth() /days;
        int h = getHeight() / 2;
        g.setGrayScale(255);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setGrayScale(0);
        g.drawLine(0, h, getWidth() , h);

		int todayX = (int)((( today.getTime() - leftday.getTime() )/msperday) * kx);
        g.drawLine(todayX, 0, todayX, h*2);

		for( int i=0; i<=days; i++ )
		{
			g.drawLine( i*kx, h, i*kx, h+3 );
		}
		
		Font font = Font.getDefaultFont();

		g.setColor( 0xFF0000 );
		g.drawString("生理", todayX+3, 3, 
			Graphics.TOP|Graphics.LEFT);
		drawCurve( phy, g );

		g.setColor( 0x007700 );
		g.drawString("情绪", todayX+3, 3+font.getHeight() , 
			Graphics.TOP|Graphics.LEFT);
		drawCurve( emt, g );

		g.setColor( 0x0000FF );
		g.drawString("智力", todayX+3, 3+2*font.getHeight() , 
			Graphics.TOP|Graphics.LEFT);
		drawCurve( intell, g );
		


	}

    public void keyPressed(int keyCode)
    {
		if( keyCode == KEY_NUM4 || getGameAction( keyCode ) == LEFT )
		{
			 leftday = new Date( leftday.getTime() - msperday ) ;
			 repaint();
		}
		else if ( keyCode == KEY_NUM6 || getGameAction( keyCode ) == RIGHT )
		{
			 leftday = new Date( leftday.getTime() + msperday ) ;
			 repaint();
		}
    }


	private void drawCurve( short [] data, Graphics g )
	{

		int kx = getWidth() / days;
		int h = getHeight() /2 ;

		int diff = (int)((leftday.getTime() - birthday.getTime())/msperday);
		for( int i=0; i<=days; i++ )
		{
			long val1 = data[ (diff+i) % data.length ];
			long val2 = data[ (diff+i+1) % data.length ];
			g.drawLine( 
				i * kx, (int)(h - val1 * h /1000  ),
				(i+1)*kx, (int)(h - val2 * h/1000  ) 
			);
		}

	}

    private static final short phy[] = {
        0, 270, 520, 731, 888, 979, 998, 942, 817, 631, 
        398, 136, -136, -398, -631, -817, -942, -998, -979, -888, 
        -731, -520, -270
    };
    private static final short emt[] = {
        0, 223, 434, 623, 782, 901, 975, 1000, 975, 901, 
        782, 623, 434, 223, 0, -223, -434, -623, -782, -901, 
        -975, -1000, -975, -901, -782, -623, -434, -223
    };
    private static final short intell[] = {
        0, 189, 372, 541, 690, 815, 910, 972, 999, 990, 
        945, 866, 756, 618, 458, 282, 95, -95, -282, -458, 
        -618, -756, -866, -945, -990, -999, -972, -910, -815, -690, 
        -541, -372, -189
    };



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -