我目前正在尝试将JFrame转换为JApplet。
它作为applet在eclipse中运行良好但是当我尝试在我的网站上使用它时它给了我一个错误。
这是我的Applet: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>
有关如何解决此错误的任何建议?
答案 0 :(得分:0)
您需要在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
指的是主applet类的类,包括任何包名称,以及.class
后缀,例如code="com.example.SampleApplet.class"
。codebase
是一个URL(相对或绝对),它指的是可以找到code
中指定的类文件的位置。如果它与html文件的位置相同,则可以省略codebase
。 现在我收到了一个不同的错误。
Access denied ("java.net.SocketPermission""Puu.sh:80""connect,ressolve")
您的applet代码没有使用套接字的必要访问权限(访问puu.sh所需的访问权限)。请注意,applet正在客户端计算机上运行,默认情况下,它们不允许在其沙箱之外进行任何访问。
您可以通过在客户端计算机上创建所谓的策略文件来调整权限 - 有关详细信息,请参阅http://download.java.net/jdk8/docs/technotes/guides/security/PolicyFiles.html。请注意,这需要在客户端完成。
我会尝试将图片放在applet所在的同一台服务器上。然后,您应该能够在不修改安全策略的情况下下载它们。