用javascript实现 <html> <head> <script language="JavaScript"> <!-- Hidevar scrtxt="怎麽样 ! 很酷吧 ! 您也可以试试."+"Here goes your message the visitors to your page will "+ "look at for hours in pure fascination..."; var lentxt=scrtxt.length; var width=100; var pos=1-width;function scroll() { pos++; var scroller=""; if (pos==lentxt) { pos=1-width; } if (pos<0) { for (var i=1; i<=Math.abs(pos); i++) { scroller=scroller+" ";} scroller=scroller+scrtxt.substring(0,width-i+1); } else { scroller=scroller+scrtxt.substring(pos,width+pos); } window.status = scroller; setTimeout("scroll()",150); } //--> </script> </head> <body onLoad="scroll();return true;"> 这里可显示您的网页 ! </body> </html>
其实那个带有警告的窗口不是IE窗口,而是Applet显示的一个Java窗口,所以不是在FRAME中嵌入Applet,也不是在Applet中嵌入FRAME,这里的FRAME不是HTML语言中的“框架",而是Java语言中的Frame类。以下的代码生成的ShowStatus.class既可以是做为一个Applet嵌入到IE中,也可以独立执行,请参考: /*File ShowStatus.java*/ //------------------------------------------------------------- /* you can use command :"javac ShowStatus.java "to compile it, and use command :"java -classpath . ShowStaus" to execute it, or use it in a html file and use the following code like this: <applet code="ShowStatus.class" > browser not support Java! </applet> */ //----------------------------------------------------------------- import java.applet.*; import java.awt.*; import java.awt.event.*;class ShowStatus extends Applet{ Button btnTest; Frame frmWindow; public void init(){ btnTest=new Button("PressME"); frmWindow=new Frame("DemoWindow"); BorderLayout lm=new BorderLayout(); setLayout(lm); btnTest.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ frmWindow.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ frmWindow.dispose(); }
看来,sun和微软的官司真是java开发者的不幸,真希望二者能在java上达成一致!否则...唉 现将修改后的代码重贴:/*File ShowStatus.java*/ //------------------------------------------------------------- /* you can use command :"javac ShowStatus.java "to compile it, and use command :"java -classpath . ShowStaus" to execute it, or use it in a html file and use the following code like this: <applet code="ShowStatus.class" > browser not support Java! </applet> */ //----------------------------------------------------------------- import java.applet.*; import java.awt.*; import java.awt.event.*; //------------------------------------------------------------------ //下面的代码加入了一个public关键字 public class ShowStatus extends Applet{ Button btnTest; Frame frmWindow; public void init(){ btnTest=new Button("PressME"); frmWindow=new Frame("DemoWindow"); BorderLayout lm=new BorderLayout(); setLayout(lm); btnTest.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ frmWindow.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ frmWindow.dispose(); }
<html>
<head>
<script language="JavaScript">
<!-- Hidevar scrtxt="怎麽样 ! 很酷吧 ! 您也可以试试."+"Here goes your message the visitors
to your page will "+
"look at for hours in pure fascination...";
var lentxt=scrtxt.length;
var width=100;
var pos=1-width;function scroll() {
pos++;
var scroller="";
if (pos==lentxt) {
pos=1-width;
}
if (pos<0) {
for (var i=1; i<=Math.abs(pos); i++) {
scroller=scroller+" ";}
scroller=scroller+scrtxt.substring(0,width-i+1);
}
else {
scroller=scroller+scrtxt.substring(pos,width+pos);
}
window.status = scroller;
setTimeout("scroll()",150);
}
//-->
</script>
</head>
<body onLoad="scroll();return true;">
这里可显示您的网页 !
</body>
</html>
我想问的是:一般情况下带applet的页面中间显示进度条“正在载入xxxx",左下角会显示"小应用程序TestApplet启动"。
但是在网上看到一些程序的左下角却显示"警告:Applet窗口",我现在就是要在页面左下角显示"警告:Applet窗口"这种效果?难道网上看到的那个是个程序,而不是applet页面?
我真糊涂了!
不让用户看到"正在加载xxxx类,正在加载xxxx资源"这个进度条?
当applet页面启动时不让java plug-in的小茶杯图标显示在任务栏?
==================================
怎么将带有applet的WEB页面放到FRAME里面?
又该怎样在JSP页面里调用这个FRAME?
控制面板-〉java-plugin->初级-〉隐藏/不启动控制台不让用户看到"正在加载xxxx类,正在加载xxxx资源"这个进度条?
是指IE上的进度条?如果是的话,就是上面那个JavaScript,
在applet中加入如下代码,为什么分别弹出FRAME窗体与APPLET窗体,而不是一个窗体?
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
在applet中加入如下代码,为什么分别弹出FRAME窗体与APPLET窗体,而不是一个窗体?
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
===================
到底怎么写呀?是在FRAME中嵌入applet,还是在applet中嵌入FRAME?
在applet中加入如下代码,为什么分别弹出FRAME窗体与APPLET窗体,而不是一个窗体?
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
/*File ShowStatus.java*/
//-------------------------------------------------------------
/*
you can use command :"javac ShowStatus.java "to compile it,
and use command :"java -classpath . ShowStaus" to execute it,
or use it in a html file and use the following code like this:
<applet code="ShowStatus.class" >
browser not support Java!
</applet>
*/
//-----------------------------------------------------------------
import java.applet.*;
import java.awt.*;
import java.awt.event.*;class ShowStatus extends Applet{
Button btnTest;
Frame frmWindow;
public void init(){
btnTest=new Button("PressME");
frmWindow=new Frame("DemoWindow");
BorderLayout lm=new BorderLayout();
setLayout(lm);
btnTest.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
frmWindow.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
frmWindow.dispose();
}
});
frmWindow.setSize(200,200);
frmWindow.setVisible(true);
}
});
add(btnTest,lm.CENTER);
}
public void destroy(){
System.exit(0);
}
public static void main(String args[]){
ShowStatus curIns=new ShowStatus();
curIns.init();
Frame mainWin=new Frame("Standalone Window");
mainWin.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
mainWin.setSize(200,80);
mainWin.add(curIns);
mainWin.setVisible(true);
}
}
(1)激活IE中的j2sdk1.4.01的applet插件
(2)将源文件ShowStatus.java 中class Status extends Applet{....}的前面加上public 关键字,用j2sdk1.4.1_01所带的javac将ShowStatus.java重新编译
(3)测试相应的网页,显示正常
(4)在IE的选项对话框中,去掉j2sdk1.4.1的插件,采用微软的jvm,此时不能正常执行
(5)改用jdk1.1.8,再次编译修改后的源文件,则无论采用j2sdk1.4.1的ie插件,还是ms的jvm,都能正常显示。
(6)如果不修改源代码,则只能利用jdk1.1.8进行编译,编译后在IE中只能利用微软的jvm,才能正常执行,用sun的j2sdk1.4.1_01所带的IE插件不能正常执行! 总结:如果开发Applet应用,请最好利用jdk1.1进行编译,这样可以保证在用户采用不同的虚拟机时,applet都能正常执行^-^
看来,sun和微软的官司真是java开发者的不幸,真希望二者能在java上达成一致!否则...唉
现将修改后的代码重贴:/*File ShowStatus.java*/
//-------------------------------------------------------------
/*
you can use command :"javac ShowStatus.java "to compile it,
and use command :"java -classpath . ShowStaus" to execute it,
or use it in a html file and use the following code like this:
<applet code="ShowStatus.class" >
browser not support Java!
</applet>
*/
//-----------------------------------------------------------------
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
//------------------------------------------------------------------
//下面的代码加入了一个public关键字
public class ShowStatus extends Applet{
Button btnTest;
Frame frmWindow;
public void init(){
btnTest=new Button("PressME");
frmWindow=new Frame("DemoWindow");
BorderLayout lm=new BorderLayout();
setLayout(lm);
btnTest.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
frmWindow.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
frmWindow.dispose();
}
});
frmWindow.setSize(200,200);
frmWindow.setVisible(true);
}
});
add(btnTest,lm.CENTER);
}
public void destroy(){
System.exit(0);
}
public static void main(String args[]){
ShowStatus curIns=new ShowStatus();
curIns.init();
Frame mainWin=new Frame("Standalone Window");
mainWin.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
mainWin.setSize(200,80);
mainWin.add(curIns);
mainWin.setVisible(true);
}
}
1>当applet弹出Frame窗口时怎样悄悄地隐藏(关闭)applet.html页面?总不能让用户看到applet.html页面吧?
因为操作界面(组件)都在Frame里(注意我说的那个网站的流程图的加载过程)
2>Frame左下角为英文的"Java Applet Window",怎样变成中文的"警告:Applet窗口"?
3>点击右上角的"X"为什么不能关闭Frame1?而关闭Applet1时却一同把Frame1给关闭了?
我自己分别单独建立了一个Applet1和Frame1,在Applet1中调用Frame1
//Applet1的代码
private void jbInit() throws Exception {
Frame1 fra=new Frame1();
fra.setSize(200,200);
fra.setVisible(true);
}
//Frame1的代码
private void jbInit() throws Exception {
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosed(WindowEvent e) {
this_windowClosed(e);
}
});
this.add(panel1, BorderLayout.CENTER);
}
void this_windowClosed(WindowEvent e) {
dispose();//这里写成System.exit(0);也不能关闭Frame1
}
我们讨论完这个问题,我会给你加分的,这个帖子分少,请到我下面的帖子中领分。
http://expert.csdn.net/Expert/topic/1464/1464666.xml?temp=.3658106
http://expert.csdn.net/Expert/topic/1470/1470347.xml?temp=.1701929
谢谢!
首先,建立三个网页,分别起名为form.html,applet.html,blank.htm,其中form.html含有一个html表单,其中有一个按钮名为btnDemo,此超文本文件示例代码如下:
<!--文件form.html-->
<html>
<head>
<title>A simple Applet Window Demo </title>
</head>
<body>
<h3>本示例如果在配置好的web服务器,如IIS或Apache上进行测试时,</h3>
<h3>请将示例网页及相应的类文件拷贝到web服务器的同一个发布目录中,</h3>
<h3>从浏览器中以http协议访问,如http://localhost/form.html</h3>
<h3>也可直接在本地硬盘目录中进行测试,但此时不能保证在所有浏览器中</h3>
<h3>都能正确隐藏applet.html页面,但在Internet Explore中可正确执行</h3>
<form action="applet.html">
<input type="button" value="显示窗口" onclick="submit()">
</form>
</body>
</html>第二个网页applet.html代码如下:
<html>
<head>
<title>Applet Demo</title>
</head>
<body>
<applet code="ShowStatus.class" width="50" height="50">
Sorry,your browser not support java!
</applet>
</body>
</html>第三个网页blank.html内容可自定,因为在用户按了form.html页面中的按钮后,服务器将加传applet.html网页,此网页中的applet小程序将自动弹出一个Java窗口,并利用第三个网页blank.html的内容将自己所在applet.html隐藏起来,即在浏览器中利用第三网页的内容代替applet.html的内容。为了简便,我们设定blank.html有如下基本代码:
<html>
<head></head>
<body></body>
</html>
请注意,这三个网页和生成的java的类文件全部都要拷贝到相应目录中,测试时可直接在此目录中双击form.html进行测验,但有些浏览器不能正常隐藏applet页面,如mozilla,但在IE中是正常的。如在自己的机器上装一个IIS或Apache,按WEB形式做测试,则在不会出问题。如果要进行WEB测试,假定相应的网页和类文件都在c:\appletdemo中,设定此文件夹在iis中虚拟目录是appletdemo,则可在自己的计算机上以http://localhost/appletdemo/form.html访问该示例。相应的java源文件如下:
//文件Status.java
/*此applet可执行在网页,也可独立执行。但独立执行时
只显示一个窗口。如果将它用于网页,请注意如果要在本地硬盘上测试
的话,要选择IE做为测试浏览器,其他浏览器不能保证正确地将此applet
所在的页面以blank.html替换
*/
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import java.net.MalformedURLException;
import java.io.*;
class MyFrame extends Frame{
private static int curCounter=0;
//Constructor :Add WindowsListener for this class
private void init(){
addWindowListener(new WinHandle(this));
setSize(300,300);
synchronized(this){
curCounter++;
}
}
public MyFrame(){
init();
}
public MyFrame(String title){
super(title);
init();
}
//--------------------------------------------
//inner class to handle Windows Closing Event
class WinHandle extends WindowAdapter{
private MyFrame curWin;
public WinHandle(MyFrame curWin){
this.curWin=curWin;
}
public void windowClosing(WindowEvent e){
synchronized(this){
curCounter--;
}
curWin.dispose();
}
public void windowClosed(WindowEvent e){
if(curCounter==0) System.exit(0);
}
}
//----------------------------------------------
}public class ShowStatus extends Applet{ public void init(){
try{
MyFrame frmWindow=new MyFrame("DemoWindow");
frmWindow.setVisible(true);
URL url=new URL(getDocumentBase(),"blank.html");
getAppletContext().showDocument(url,"_self");
stop();
}
catch(MalformedURLException e){
e.printStackTrace();
}
}
public void destroy(){
System.exit(0);
}
public void stop(){
}
public static void main(String args[]){
ShowStatus curIns=new ShowStatus();
curIns.init();
MyFrame mainWin=new MyFrame("Standalone Window");
mainWin.setSize(200,200);
mainWin.add(curIns);
mainWin.setVisible(true);
}
}
请最好用jdk1.1.8进行编译,我用jdk1.3.0做过测试,也能正常运行在ms的jvm中,但如果用
jdk1.4.1_01编译,则只能运行在j2sdk1.4.1_01的虚拟机IE插件中。源码解释:
applet在装入页面时会自动执行一次init()方法,所以可以利用这一特性自动显示对应的java窗口,然后利用getAppletContext().showDocument方法显示另一个网页,从而隐藏了自己所在的网页。 楼主所写的代码之所以不能关闭弹出的java窗体,是因为重载的WindowAdapter类中的方法不对,应重载windowClosing方法,而不是windowClosed方法。在windowClosing方法中利用Frame类的dispose方法关闭当前窗口就可以了。这里我也对windowClosed进行了重载,主要是为了使程序逻辑清楚。至于那个静态变量,是一个窗口计数器,其目的是当此程序运行在application的模式时监测当前系统中究竟有几个MyFrame类的实例。当实例的个数为零时,将退出系统,终止application的运行。