我目前正在尝试将我的JFrame转换为JApplet。
它作为applet在eclipse中运行得很好,但是当我试图在我的网站上使用它时,它给了我一个错误。
这是我的小程序:http://tekhaxs.com/applet.java
您可以在^^或以下位置查看我的java源代码。
下面是错误:http://tekhaxs.com/?page_id=146
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import javax.imageio.ImageIO;
public class applet extends JApplet
{
JButton newBut = new JButton("New");
JButton backBut = new JButton("Back");
Font font;
BufferedImage img = null;
BufferedImage background = null;
URL url = null;
String extension;
int linkNum = 0;
int total = 0;
int backNum = 0;
String appending;
ArrayList<String> az = new ArrayList<String>();
ArrayList<String> history = new ArrayList<String>();
public void init() //initialize everything.
{
this.setLayout(null);
backBut.addActionListener(new buttonListener());
this.add(backBut);
backBut.setBounds(300, 5, 80, 35);
newBut.addActionListener(new buttonListener());
this.add(newBut);
newBut.setBounds(400, 5, 80, 35);
font = new Font("arial",Font.BOLD,20);
makeArrays();
changeUrlExtension();
try {
background = ImageIO.read(new URL("http://puu.sh/3a7KY/d2ba48949c.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
class buttonListener implements ActionListener //Button Listener for next.
{
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == backBut){
backNum++;
extension = history.get(total - backNum - 1);
repaint();
}else if(e.getSource() == newBut){
backNum = 0;
changeUrlExtension();
history.add(extension);
total++;
repaint();
}
}
}
public void changeUrlExtension(){
int a1 = (int) Math.round(Math.random() * 51);
int a2 = (int) Math.round(Math.random() * 51);
int a3 = (int) Math.round(Math.random() * 51);
String aaa = (az.get(a3)+az.get(a2)+az.get(a1));
int linkNum = (int) Math.round(Math.random() * 13) + 20;
extension = linkNum+aaa;
try {
url = new URL("http://puu.sh/"+extension+".png");
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public void paint(Graphics g) { //Paints Graphics for frame.
g.drawImage(background, 0, 0, null);
g.drawImage(getImage(), 5, 50, null);
g.setColor(Color.MAGENTA);
g.drawString("Current Picture: http://puu.sh/"+extension+".png", 10,40);
g.setFont(font);
g.drawString("Picture Number: "+(total - backNum), 10,20);
}
public Image getImage(){ //Returns Image from url.
try {
url = new URL("http://puu.sh/"+extension+".png");
} catch (IOException e) {
e.printStackTrace();
}
try {
img = ImageIO.read(url);
System.out.println(total+". "+url);
} catch (IOException e) {
changeUrlExtension();
getImage();
}
return img;
}
public void makeArrays(){ //Makes az Array.
az.add("A");
az.add("a");
az.add("B");
az.add("b");
az.add("C");
az.add("c");
az.add("D");
az.add("d");
az.add("E");
az.add("e");
az.add("F");
az.add("f");
az.add("G");
az.add("g");
az.add("H");
az.add("h");
az.add("I");
az.add("i");
az.add("J");
az.add("j");
az.add("K");
az.add("k");
az.add("L");
az.add("l");
az.add("M");
az.add("m");
az.add("N");
az.add("n");
az.add("O");
az.add("o");
az.add("P");
az.add("p");
az.add("Q");
az.add("q");
az.add("R");
az.add("r");
az.add("S");
az.add("s");
az.add("T");
az.add("t");
az.add("U");
az.add("u");
az.add("V");
az.add("v");
az.add("W");
az.add("w");
az.add("X");
az.add("x");
az.add("Y");
az.add("y");
az.add("Z");
az.add("z");
}
}下面是我用来调用我的JApplet的html代码。
<applet code="http://tekhaxs.com/applet.java" width="400" height="400">
If your browser was Java-enabled, a Puush Browser would appear here.
</applet>对如何修复这个错误有什么建议吗?
发布于 2013-06-07 16:41:15
您需要在code属性中提供小程序的类文件:
<applet code="applet.class" width="400" height="400">如果类文件与您的html文件位于相同的位置,这应该会起作用。如果类文件位于其他位置,则需要通过附加的codebase属性指定位置,例如,如果类文件位于bin子目录中,则指定
<applet code="applet.class" codebase="bin" width="400" height="400">有关更多信息,请参见http://www.duckware.com/applets/reference.html。
本质上,
code指的是主小程序类的类,包括任何包名,并且带有URL后缀,就像在code="com.example.SampleApplet.class".codebase中一样,是一个.class (相对或绝对),它指的是可以找到在code中指定的类文件的位置。如果它与html文件的位置相同,则可以省略codebase。现在我得到了一个不同的错误。
Access denied ("java.net.SocketPermission""Puu.sh:80""connect,ressolve")您的小程序代码没有使用套接字所需的访问权限(这是在代码中访问puu.sh所必需的)。请注意,applet在客户机上运行,默认情况下,不允许它们访问其沙箱之外的任何内容。
您可以通过在客户机上创建所谓的策略文件来调整权限-有关详细信息,请参阅http://download.java.net/jdk8/docs/technotes/guides/security/PolicyFiles.html。请注意,这需要在客户端完成。
我会尝试将图像放在您的applet所在的同一服务器上。然后,您应该能够在不修改安全策略的情况下下载它们。
https://stackoverflow.com/questions/16979667
复制相似问题