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程序可以编译通过,就是在运行时候报错,请指点一下,谢谢!
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程序可以编译通过,就是在运行时候报错,请指点一下,谢谢!
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)