不應該在晚上八點多打盹的...
現在完全沒睡意Orz
原本以為 Java 在寫程式的時候,只要把
import java.awt.*;
import javax.swing.*;
import java.io.*;
以上加入即可使用底下所有的 class
沒想到 compiler 的時候一直跳錯
BufferedImage : cannot find symbol
後來才發現要完整加入才能正常使用
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
另外就是使用 Thread 的類別實作時還需要另外用個類別來顯示
否則在 Thread 裡面使用 main() 也會跳錯
import java.awt.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
class ImageComponent implements Runnable
{
String Filename; // 目前的檔名
BufferedImage image; // 目前的影像
JFrame f; // 目前的視窗
public ImageComponent(String aFilename)
{
Filename=aFilename;
image=LoadImage(Filename);
}
// 載入一張影像
public static BufferedImage LoadImage(String Filename)
{
BufferedImage image;
try
{
image=ImageIO.read(new File(Filename));
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(null, "載入圖檔錯誤: "+Filename);
image=null;
}
return image;
}
// 顯示一張影像
public void Show()
{
SwingUtilities.invokeLater(this);
}
// 實體化影像物件的方法
public void run()
{
f = new JFrame("");
// Step 1: 若影像超過螢幕, 則加入捲軸
JScrollPane scrollPane = new JScrollPane(new JLabel(new ImageIcon(image)));
f.getContentPane().add(scrollPane);
f.pack();
// Step 2: 設定點選 x 表示關閉視窗
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Step 3: 加入視窗標題
f.setTitle(Filename+" "+image.getWidth()+" x "+image.getHeight());
// Step 4: 設定視窗顯示在螢幕中央
f.setLocationRelativeTo(null);
// Step 5: 顯示出視窗
f.setVisible(true);
}
}
public class MyShow
{
public static void main(String argv[])
{
ImageComponent Img = new ImageComponent("D:\\1.JPG");
Img.Show();
}
}
