📄 cammonitor.java
字号:
import java.awt.Graphics;import java.awt.Canvas;import java.awt.Dimension;import java.awt.Image;import java.awt.Color;import java.awt.Toolkit;import java.awt.image.ImageObserver;import java.net.URL;import java.net.MalformedURLException;import java.util.Date;public class camMonitor extends Canvas implements Runnable { URL pic; int update; String id; Dimension size; Toolkit tk; Thread t; Image image, scaledImage; String time; /** * Initialize the cam monitor. * @param url URL of the picture * @param update Update time in seconds. */ public camMonitor(String id, String url, int update) { // initialize the URL try { pic = new URL(url); } catch(Exception e) { System.out.println("Unexpected Error: "+e); System.exit(1);; } this.id = id; this.update = update * 1000; size = new Dimension(100, 75); tk = this.getToolkit(); t = new Thread(this); t.start(); } boolean complete = false; /** * Download the picture every "update" seconds. The image will be * scaled to the size of the component. The aspect is restored when * the actual image size is known (2nd download). */ public void run() { while(t != null) { // flush the image data (clear cache) if(image != null) image.flush(); // download the image image = tk.getImage(pic); scaleImage(); time = ""; try { time = (new Date(pic.openConnection().getLastModified())) .toString().substring(0, 16); } catch(Exception e) { System.err.println("Could not determine modification time:"); System.err.println(pic); time = ""; } repaint(); // sleep ... try { t.sleep(update); } catch(InterruptedException e) { e.printStackTrace(); } } } private void scaleImage() { if(image == null) return; Dimension size = new Dimension(getSize()); if(size.width > size.height) { size.width = -1; size.height -= 2; } else { size.width -= 2; size.height = -1; } scaledImage = image.getScaledInstance(size.width, size.height, Image.SCALE_SMOOTH); } /** * Paint the scaled image or write "No Image". * @param g Graphics context. */ public void paint(Graphics g) { if(scaledImage != null ) { g.setColor(Color.white); g.draw3DRect(0, 0, size.width, size.height, true); g.drawImage(scaledImage, 1, 1, this); g.setColor(Color.black); g.setXORMode(Color.white); g.drawString(id, 3, getFontMetrics(getFont()).getHeight()); g.drawString(time, 3, size.height - 3); } else { g.drawString(id, 3, getFontMetrics(getFont()).getHeight()); g.drawString("No Image", 3, size.height - 3); } } public void setSize(Dimension d) { size = d; super.setSize(d); scaleImage(); } public Dimension getPreferredSize() { return getSize(); } /** * Get the current Image size. */ public Dimension getSize() { return size; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -