import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
//定义一个异常类,口令长度应为6~10之间
class PasException extends Exception

public String getMessage()
{
return "口令无效,口令长度应为6~10之间";
}
}class panelTest extends JApplet 
{
//声明一些属性
String custName;
String custPassword;
JPanel panelObj;
JLabel labName;
JLabel labPassword;
JTextField textName;
JPasswordField textPassword;
JButton buttonLogin;//检验并抛出异常的方法
void setPassword(String password) throws PasException 
{
if(password.length()<6||password.length()>10) throw new PasException();//抛弃一个我们已经定义好的异常类的对象
else
custPassword=password;
}
public panelTest()
{
panelObj=new JPanel();
getContentPane().add(panelObj);
FlowLayout layoutObj=new FlowLayout(FlowLayout.RIGHT,5,5);
panelObj.setLayout(layoutObj);//流布局
labName=new JLabel("用户名称");
labPassword=new JLabel("口令");
textName=new JTextField(15);
textPassword=new JPasswordField(15);
buttonLogin=new JButton("登录(D)");
panelObj.add(labName);
panelObj.add(textName);
panelObj.add(labPassword);
panelObj.add(textPassword);
panelObj.add(buttonLogin); 
} }class EventTest extends panelTest

buttonEvent bEObj; //内部类对象
public EventTest()

bEObj=new buttonEvent();
buttonLogin.addActionListener(bEObj);//登录按钮的事件监听器
}
class buttonEvent implements ActionListener//内部类
{
public void actionPerformed(ActionEvent evt)//重写接口中的方法
{
Object obj=evt.getSource();
if(obj==buttonLogin)
{
custName=textName.getText();
custPassword=new String(textPassword.getPassword());
String entry=custName+":"+custPassword;
if(custName.length()==0)
{
getAppletContext().showStatus("警告!用户名称框不能为空");
return;
}
if(custPassword.length()==0)
{
getAppletContext().showStatus("警告!用户口令框不能为空");
return;
}
else
{
try
{
setPassword(custPassword);
}
catch(PasException e)
{
getAppletContext().showStatus(e.getMessage());
return;
}
}try{
File fileObj=new File("c:\\FileTest\\customer.txt");
RandomAccessFile logFile=new RandomAccessFile(fileObj,"rw");
logFile.seek(logFile.length());
logFile.writeBytes(entry);
}
catch(IOException e)
{
getAppletContext().showStatus("不能写到文件:customer.txt");
}
}
}
}
}public class Psw extends EventTest
{
public void init()
{
new Psw();
}
}这个小applet程序可以编译通过,就是在运行时候报错,请指点一下,谢谢!

解决方案 »

  1.   

    OK,没问题了,是html文件里的<applet>标记里的code属性后的文件名写错了,惭愧:)
      

  2.   

    按“登录”按钮提交后报错,昏
    E:\JAVA>appletviewer Psw.html
    java.security.AccessControlException: access denied (java.io.FilePermission c:\FileTest\customer.txt read)
            at java.security.AccessControlContext.checkPermission(AccessControlContext.java:269)
            at java.security.AccessController.checkPermission(AccessController.java:401)
            at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)
            at java.lang.SecurityManager.checkRead(SecurityManager.java:863)
            at java.io.RandomAccessFile.<init>(RandomAccessFile.java:195)
            at EventTest$buttonEvent.actionPerformed(Psw.java:98)
            at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
            at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
            at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
            at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
            at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
            at java.awt.Component.processMouseEvent(Component.java:5100)
            at java.awt.Component.processEvent(Component.java:4897)
            at java.awt.Container.processEvent(Container.java:1569)
            at java.awt.Component.dispatchEventImpl(Component.java:3615)
            at java.awt.Container.dispatchEventImpl(Container.java:1627)
            at java.awt.Component.dispatchEvent(Component.java:3477)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
            at java.awt.Container.dispatchEventImpl(Container.java:1613)
            at java.awt.Component.dispatchEvent(Component.java:3477)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
      

  3.   

    applet访问本地文件要有证书的吧