//cd c:\HPBasic\Toppage-sample3\MySwing //javac Omikuji2.java //set CLASSPATH=. //appletviewer Omikuji2.html import java.applet.*; import java.awt.*; import java.awt.event.*; import java.net.*; import javax.swing.*; /* */ public class Omikuji2 extends JApplet implements ActionListener { JLabel label1; public void init(){ Container pane = getContentPane(); String html1="
"; JButton uranai = new JButton(html1 + "あなたの運勢は?"); uranai.addActionListener(this); pane.add(uranai,BorderLayout.WEST); label1 = new JLabel(""); pane.add(label1,BorderLayout.EAST); URL baseURL = getCodeBase(); ImageIcon icon = new ImageIcon(getURL(baseURL,"shinobazu47.jpg")); // "../image/shinobazu47.jpg" でもトライしたが、ローカルではだめ。 JLabel label2 = new JLabel(icon); pane.add(label2,BorderLayout.SOUTH); } public void actionPerformed(ActionEvent event) { String[] omikuji = {"大吉","吉","小吉","小凶","凶","大凶"}; int n = (int)Math.floor(Math.random()*6); String message = " すべてうまくいくが、調子に乗らぬこと"; String message1 = " 小さな喜び事あり。争いを避けること"; String message2 = " これからが肝心。今の調子でがんばれ"; String message3 = " 思わぬところに落とし穴が。用心すべし"; String message4 = " 何事も辛抱"; String message5 = " 今が最悪期。これから徐々に運が上向く"; String html2=""; String html3="";
switch (n) {
case 0: label1.setText(html2 + omikuji[0] + html3 + message); break;
case 1: label1.setText(html2 + omikuji[1] + html3 + message1); break;
case 2: label1.setText(html2 + omikuji[2] + html3 + message2); break;
case 3: label1.setText(html2 + omikuji[3] + html3 + message3); break;
case 4: label1.setText(html2 + omikuji[4] + html3 + message4); break;
case 5: label1.setText(html2 + omikuji[5] + html3 + message5); break;
}
}
protected URL getURL(URL codeBase, String filename) {
URL url = null;
try {
url = new URL(codeBase, filename);
} catch (java.net.MalformedURLException e) {
System.out.println("Couldn't create image: badly specified URL");
return null;
}
return url;
}
}
/*
1 Omikuji2.java
ImageIcon("rakan168.jpg") では、appletviewerはOKだが、ブラウザではだめ(Omikuji4.java)なので、ImageIcon(URL url)を使用。
uswing/components/TumbleItem.htmlを参考にした。
スロー宣言が必要とのことで、getURLメソッドを作り、Omikuji2.javaで解決した。
appletviewer、ブラウザともOK。"../image/rakan168.jpg" はappletviewer ではだめ。 (ただ、Lunar.javaの
URL iconURL=ClassLoader.getSystemResource("rakan168.jpg");
ImageIcon icon = new ImageIcon(iconURL);
は失敗。Omikuji20.javaとした)
ImageIcon icon = new ImageIcon(getCodeBase(),"rakan168.jpg");
とすると、appletviewerでもだめ。
URL baseURL=getCodeBase();
URL url=new URL(baseURL,"rakan168.jpg");
JLabel label2 = new JLabel(new ImageIcon(url));
C:\HPBasic\Toppage-sample3\MySwing>javac Omikuji.java
Omikuji.java:31: 例外 java.net.MalformedURLException は報告されません。スローす
るにはキャッチまたは、スロー宣言をしなければなりません。
URL url=new URL(baseURL,"rakan168.jpg");
11/6 12時 ブラウザで再度おかしくなった。しかし、アップすると大丈夫でした!!
java.security.AccessControlException: access denied (java.io.FilePermission \C:\HPBasic\Toppage-sample3\image\rakan168.jpg read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
at sun.awt.SunToolkit.getImage(Unknown Source)
at javax.swing.ImageIcon.