在 JBuilder 中使用 XYLayout(com.borland.jbcl.layout)等非 JDK 標準類別開發 Applet 時,雖然在 IDE 預覽正常,但部署到瀏覽器(如 IE)會因找不到類別而報錯 load: test1.Applet1 can't be instantiated。JAR 檔案可將這些相依類別一併打包,解決部署難題。
在面板使用 XYLayout,加入三個按鈕與右鍵彈出選單。簡化後的原始碼:
package test1;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import com.borland.jbcl.layout.*;
public class Applet1 extends Applet {
boolean isStandalone = false;
PopupMenu popupMenu1 = new PopupMenu();
MenuItem menuItem1 = new MenuItem(), menuItem2 = new MenuItem(), menuItem3 = new MenuItem();
Button button1 = new Button(), button2 = new Button(), button3 = new Button();
XYLayout xYLayout1 = new XYLayout(); // 非標準類別
public void init() {
menuItem1.setLabel("1"); menuItem2.setLabel("2"); menuItem3.setLabel("3");
button1.setLabel("button1"); button2.setLabel("button2"); button3.setLabel("button3");
button1.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) { button1_mousePressed(e); }
});
button2.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) { button1_mousePressed(e); }
});
button3.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) { button1_mousePressed(e); }
});
this.setLayout(xYLayout1);
popupMenu1.add(menuItem1); popupMenu1.add(menuItem2); popupMenu1.add(menuItem3);
this.add(button1, new XYConstraints(155, 5, -1, -1));
add(popupMenu1);
this.add(button2, new XYConstraints(49, 94, 101, 32));
this.add(button3, new XYConstraints(235, 92, 98, 36));
}
void button1_mousePressed(MouseEvent e) {
if ((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0) {
popupMenu1.show(button1, e.getX(), e.getY());
}
}
}
Wizards → Archive Builder 或 New → Archive Builder。Applet。Include required classes and known resources。test1.Applet1.class。XYLayout.class、XYConstraints.class 等被納入 JAR。test1.jar,解壓可見 com/borland/jbcl/layout/ 目錄與類別檔。<applet code="test1.Applet1.class" archive="test1.jar" width="350" height="200"></applet>
將 test1.jar 與 HTML 放同一目錄。若更新 JAR 後瀏覽器未重新載入,請按 Ctrl+F5 強制重整。
IE 預設僅支援 JDK 1.0,無法直接執行 Swing(JDK 1.1+)。若 Applet 需使用 JButton 等 Swing 元件,有兩種替代方案:
src.jar 解壓,找出所需 Swing 類別(如 javax.swing.JButton)及其所有相依類別,複製到專案目錄,修改 package 宣告為自訂套件(如 my.swing),重新編譯後打入 JAR。雖然工程量大,但能讓 Applet 在無 JRE 環境下運行 Swing 元件,同時有助於深入理解 Java 類別結構。JAR 結合數位簽章可突破 Applet 沙箱限制,取得本地檔案、網路存取等權限。後續文章將詳細探討簽章流程與安全性設定。