TempLan28.java
import java.applet.*;
import java.awt.*;
import java.net.*;
import java.io.*;
import java.text.*;
public class TempLan28 extends Applet implements Runnable
{
Thread timer;
Graphics OffGC;
Image OffScreenImage;
InetAddress xport_ip = null;
int port = 10001;
int inum = 0 ;
int grx = 50 ;
int gry = 550 ;
double num;
Socket xport_socket;
BufferedReader socketin;
String buff;
public void initOffGC()
{
OffGC.setColor(Color.black);
OffGC.setFont(new Font("Serif",Font.BOLD,18));
OffGC.drawLine( 45, 550, 750, 550);
// 時間軸
OffGC.drawString("0",30,555);
OffGC.drawLine( 50, 555, 50, 50);
// 温度軸
OffGC.drawLine( 45, 500, 750, 500);
// 5度
OffGC.drawString("5",30,505);
OffGC.drawLine( 45, 450, 750, 450);
// 10度
OffGC.drawString("10",20,455);
OffGC.drawLine( 45, 400, 750, 400);
// 15度
OffGC.drawString("15",20,405);
OffGC.drawLine( 45, 350, 750, 350);
// 20度
OffGC.drawString("20",20,355);
OffGC.drawLine( 45, 300, 750, 300);
// 25度
OffGC.drawString("25",20,305);
OffGC.drawLine( 45, 250, 750, 250);
// 30度
OffGC.drawString("30",20,255);
OffGC.drawLine( 45, 200, 750, 200);
// 35度
OffGC.drawString("35",20,205);
OffGC.drawLine( 45, 150, 750, 150);
// 40度
OffGC.drawString("40",20,155);
OffGC.drawLine( 45, 100, 750, 100);
// 45度
OffGC.drawString("45",20,105);
OffGC.drawLine( 45, 50, 750, 50);
// 50度
OffGC.drawString("50",20,55);
}
public void init()
{
OffScreenImage = createImage(800,600);
OffGC = OffScreenImage.getGraphics();
try
{
xport_ip = InetAddress.getByName(getCodeBase().getHost());
}
catch(UnknownHostException e){}
try
{
xport_socket = new
Socket(xport_ip, port);
socketin = new BufferedReader(
new InputStreamReader(xport_socket.getInputStream()));
}
catch(IOException e){}
initOffGC();
}
public void start()
{
timer = new Thread(this);
timer.start();
}
public void stop()
{
try
{
socketin.close();
xport_socket.close();
}
catch(IOException e){}
timer = null;
}
public void run()
{
Thread me = Thread.currentThread();
while(timer == me)
{
try
{
Thread.currentThread().sleep(100);
}
catch(InterruptedException
e){}
try
{
buff = socketin.readLine();
num = Double.parseDouble(buff);
num = 10.0 * num;
inum = (int)num;
}
catch(IOException
e){}
Dimension d = getSize();
String t = buff +
"℃";
if(grx > 750){
grx = 50 ;
OffGC.clearRect(0, 0, d.width, d.height);
initOffGC();
}
gry = -inum + 550
;
Font CurrentFont
= OffGC.getFont();
Font font = new Font("MS
明朝" , Font.BOLD , 36);
OffGC.setFont(font);
FontMetrics metrics
= getFontMetrics(font);
OffGC.setColor(Color.black);
OffGC.clearRect(0,
0, 400, 40);
OffGC.drawString(t,
50, 35);
OffGC.setColor(Color.blue);
OffGC.fillOval(grx,
gry, 2, 2);
grx = grx + 2 ;
OffGC.setFont(CurrentFont);
repaint();
}
}
public void paint(Graphics g)
{
g.drawImage(OffScreenImage,0,0,this);
}
public void update(Graphics g)
{
paint(g);
}
public void destroy()
{
OffGC.dispose();
}
} |