呵呵,代码较长又较乱,不知谁有耐心看没有
import java.awt.*;
import java.net.URL;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.event.*;
import java.io.*;
import java.util.Vector;
import java.util.Hashtable;
import java.util.Enumeration;
import java.util.StringTokenizer;
import java.util.zip.ZipInputStream;
import com.apply.*;
import netscape.javascript.JSObject;
import netscape.javascript.JSException;
public class Read_wal_file extends Applet implements ActionListener{
private Button butZoomIn;
   private Button butZoomOut;
   private Button butMove;
   private Button butFitView;
   private Button butZoomPart;
   private Button butQuery;
   private Button butRefresh;
   private Button butIndex;
   private Button butCancelJJ;
  
   private Panel butPanel;
  
   private Panel drawPanel;
   private Panel indexPanel;
   public static zxIndex indexCanvas;
   private Panel centerPanel;
   private Label label;
   public zxCanvas canvas;
   private Scrollbar scrollbar;
//private Frame f1;
private Hashtable pointHashtable,rgnHashtable,lineHashtable,subImgHashtable;

String s = null;
Image img = null;
boolean indexIsShow = false;//索引窗口开关控制;

private float moveX1,moveX2,moveY1,moveY2,x,y;//鼠标按下、松开及当前的坐标点;
private float moveOffsetX,moveOffsetY;
boolean isDrag = false;


private float center_winX = 25;//让坐标点居中显示时,屏幕显示的范围,(x-25---x+25)
private float center_winY = 15;//(y-15  --  y+15);

Thread drawFlashThread = null;//定义控制原始线园元闪烁的线程;
Thread pointFlashThread = null;//定义控制点闪烁的线程;
Thread JJ_rgnFlashThread = null;//定义临时警戒区域闪烁线程;
Thread scanThread = null;//周期扫描数据库线程;
Thread soundThread = null;//报警声音线程;

int delay;//两次闪烁之间的延迟;
Vector drawFlash_vector;//闪烁的线的信息(Vector);
int flashPointX,flashPointY;//闪烁的点的中心点坐标;

public Hashtable shipHashtable = new Hashtable();//存放从WEB中查询出来的船的信息;
private Hashtable query_ship_hashtable = new Hashtable();//存放被选中的的船信息;
private Hashtable str_OuterRect_Hasth = new Hashtable();//存放在航迹点写的日期时刻字符的外接矩形;
private Hashtable JJ_Hashtable = new Hashtable();//存放临时警戒区的坐标点,JJ_rgn;
private boolean is_del_jjRGN = false;//是否处于删除临时警戒区域状态;

private AudioClip audio = null;//声音;


class zxCanvas extends Panel{//定义画图的背景canvas类;

public void paint(Graphics g){
System.out.println("调用canvas的刷新");
drawImg();
draw_JJ_paint();
draw_ship_track();//画查询出来的船及航迹;
}
}//这个就是那个作图区的Panel了.public void initWin(){
butZoomIn = new Button("放大");
     butZoomOut = new Button("缩小");
     butZoomPart = new Button("局部放大");
     butMove = new Button("移动");
     butFitView = new Button("全屏显示");
     butRefresh = new Button("刷新");
     butQuery = new Button("信息查询");
     butIndex = new Button("索引窗口");
     butCancelJJ = new Button("撤除警报");
    
     butPanel = new Panel();
     drawPanel = new Panel();
     canvas = new zxCanvas();
     centerPanel = new Panel();
     indexCanvas = new zxIndex(217,137);
    
     label = new Label();
} public void init(){
initWin();
String imageFile = "test.jpg";
try{
img = getImage(getDocumentBase(),imageFile);//加载索引图片;
}catch(Exception e){
e.printStackTrace();
System.out.println("找不到索引图片");
}

butPanel.setLayout(new GridLayout(1,8,0,0)) ;
     butPanel.add(butZoomIn);
     butPanel.add(butZoomOut);
     butPanel.add(butMove);
     butPanel.add(butFitView);
     butPanel.add(butZoomPart);
     butPanel.add(butQuery);
     butPanel.add(butRefresh);
     butPanel.add(butIndex);
     butPanel.add(butCancelJJ);
     butZoomIn.addActionListener(this);
     butZoomOut.addActionListener(this);
     butMove.addActionListener(this);
     butFitView.addActionListener(this);
     butZoomPart.addActionListener(this);
     butQuery.addActionListener(this);
     butRefresh.addActionListener(this);
     butIndex.addActionListener(this);
     butCancelJJ.addActionListener(this); indexCanvas.setBackground(Color.white);
//indexCanvas.setSize(217,137);//索引图片的画板;

    canvas.setBackground(Color.cyan) ;//画图的面板
    canvas.setLayout(new FlowLayout(0,0,FlowLayout.RIGHT));
    indexPanel = new Panel(new BorderLayout());
indexPanel.setBackground(Color.white);
    Label indexLabel = new Label("地图漫游索引",Label.CENTER);
    indexLabel.setFont(new Font("黑体",Font.BOLD,20));
    indexPanel.add(indexLabel,BorderLayout.NORTH);
    indexPanel.add(indexCanvas,BorderLayout.CENTER);
    
canvas.add(indexPanel);
this.setLayout(new BorderLayout()) ;
    this.add(butPanel,BorderLayout.NORTH );
    //this.add(drawPanel,BorderLayout.CENTER );
    this.add(canvas,BorderLayout.CENTER);
    //this.add(centerPanel,BorderLayout.CENTER);
    //f.add(scrollbar);
    this.add(label,BorderLayout.SOUTH );

    butPanel.setSize(500,20) ;
    drawPanel.setBackground(Color.cyan );
    //drawPanel.add(butMove);
    
    canvas.addMouseListener(mouseListener);
    canvas.addMouseMotionListener(MouseMotionListener1); this.setVisible(true);
this.setSize(1200,860);public void paint(){//在JS中调用刷新;
this.repaint();
canvas.repaint();
butPanel.repaint();
this.butCancelJJ.repaint();
this.butZoomIn.repaint();
this.butZoomOut.repaint();
this.butMove.repaint();
this.butFitView.repaint();
this.butIndex.repaint();
this.butRefresh.repaint();
this.butQuery.repaint();
this.butZoomPart.repaint();
}
}//就找了些关于图形界面的代码以及那个被JS调用刷新的paint()方法了.

解决方案 »

  1.   

    本来日期控件是选择完自动消失的,如果我下面不是APPLET的话.但如果下面是APPLET了,日期控件就不会自动消失了.我只要调用APPLET的刷新了.各位老兄们有没有什么好的日期控件推荐来用用的?
      

  2.   

    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
    <TITLE>时间选择</TITLE>
    </HEAD>
    <BODY  topmargin="0" leftmargin="0">  <script language="JavaScript">
    <!-- Begin
    var Bool;
    var sKey;
    var dDate = new Date();
    var dCurMonth = dDate.getMonth();
    var dCurDayOfMonth = dDate.getDate();
    var dCurYear = dDate.getFullYear();
    var objPrevElement = new Object();
    var SelectYear;
    var SelectMonth;function fToggleColor(myElement) {
    var toggleColor = "#ff0000";
    var strId;
    strId=myElement.id;
    if (myElement.id == "calDateText") {
    if (myElement.color == toggleColor) {
    myElement.color = "";
    } else {
    myElement.color = toggleColor;
       }
    } else if (strId.substring(0,7) == "calCell") {
    for (var i in myElement.children) {
    if (myElement.children[i].id == "calDateText") {
    if (myElement.children[i].color == toggleColor) {
    myElement.children[i].color = "";
    } else {
    myElement.children[i].color = toggleColor;
                }
             }
          }
       }
    }
    function FSel(myElement)
    {
    var strId;
    SelectYear=tbSelYear.value;
    SelectMonth=tbSelMonth.value;
    strId=myElement.id;
    if (strId.substring(0,7) == "calCell") {
    if (!isNaN(parseInt(myElement.children["calDateText"].innerText))) {
    if ((SelectMonth!=(dCurMonth+1)) && (SelectYear!=dCurYear)){
    myElement.bgColor = "#fa8072";
    //document.all.calSelectedDate.value = document.all("tbselyear").value+"-"+document.all("tbselmonth").value+"-"+myElement.children["calDateText"].innerText;
    Bool=true;}
          }
       }
    }
    function fSetSelectedDay(myElement){
    var strId;
    strId=myElement.id;
    SelectYear=tbSelYear.value;
    SelectMonth=tbSelMonth.value;
    if (strId.substring(0,7) == "calCell") {
    if (!isNaN(parseInt(myElement.children["calDateText"].innerText))) {
    if (strId==sKey)
    {
    myElement.bgColor = "#fa8072";
    }
    else
    {
    //myElement.bgColor = "#1e90ff";
    myElement.bgColor = "#ffffff";
    //FSel(document.all(sKey));
    }
    if (objPrevElement.id!=sKey)
    {
    objPrevElement.bgColor = "";
    }
    else
    {
    if ((parseInt(SelectMonth)!=parseInt(dCurMonth+1)) && (parseInt(SelectYear)!=parseInt(dCurYear)))
    {
    objPrevElement.bgColor = "";
    }
    }
    //document.all.calSelectedDate.value = document.all("tbselyear").value+"-"+document.all("tbselmonth").value+"-"+myElement.children["calDateText"].innerText;
    var obj//window.opener.STime.value=document.all("tbselyear").value+"-"+document.all("tbselmonth").value+"-"+myElement.children["calDateText"].innerText;
    //alert("stime=" & window.opener.STime.value);
    Bool=true;
    objPrevElement = myElement;
    obj=parent.document.frames("trendtopframe").document;
    obj.all("STime").value=document.all("tbselyear").value+"-"+document.all("tbselmonth").value+"-"+myElement.children["calDateText"].innerText;
    if(obj.all("choice").selectedIndex==obj.all("choice").length-1)
    {
       obj.all("choice").selectedIndex=0;
    }
          }
       }
    parent.document.all("S").style.visibility="hidden";  
    //window.close();
    }
    function fGetDaysInMonth(iMonth, iYear) {
    var dPrevDate = new Date(iYear, iMonth, 0);
    return dPrevDate.getDate();
    }
    function fBuildCal(iYear, iMonth, iDayStyle) {
    var aMonth = new Array();
    aMonth[0] = new Array(7);
    aMonth[1] = new Array(7);
    aMonth[2] = new Array(7);
    aMonth[3] = new Array(7);
    aMonth[4] = new Array(7);
    aMonth[5] = new Array(7);
    aMonth[6] = new Array(7);
    var dCalDate = new Date(iYear, iMonth-1, 1);
    var iDayOfFirst = dCalDate.getDay();
    var iDaysInMonth = fGetDaysInMonth(iMonth, iYear);
    var iVarDate = 1;
    var i, d, w;
    if (iDayStyle == 2) {
    aMonth[0][0] = "日";
    aMonth[0][1] = "一";
    aMonth[0][2] = "二";
    aMonth[0][3] = "三";
    aMonth[0][4] = "四";
    aMonth[0][5] ="五";
    aMonth[0][6] = "六";
    } else if (iDayStyle == 1) {
    aMonth[0][0] = "日";
    aMonth[0][1] ="一";
    aMonth[0][2] = "二";
    aMonth[0][3] ="三";
    aMonth[0][4] ="四";
    aMonth[0][5] = "五";
    aMonth[0][6] ="六";
    } else {
    aMonth[0][0] = "日";
    aMonth[0][1] ="一";
    aMonth[0][2] = "二";
    aMonth[0][3] ="三";
    aMonth[0][4] ="四";
    aMonth[0][5] = "五";
    aMonth[0][6] ="六";
    }
    for (d = iDayOfFirst; d < 7; d++) {
    aMonth[1][d] = iVarDate;
    iVarDate++;
    }
    for (w = 2; w < 7; w++) {
    for (d = 0; d < 7; d++) {
    if (iVarDate <= iDaysInMonth) {
    aMonth[w][d] = iVarDate;
    iVarDate++;
          }
       }
    }
    return aMonth;
    }
    function fDrawCal(iYear, iMonth, iCellWidth, iCellHeight, sDateTextSize, sDateTextWeight, iDayStyle) {
    var myMonth;
    myMonth = fBuildCal(iYear, iMonth, iDayStyle);
    document.write ("<Center>");
    document.write("<table border='0'  cellspacing='0'  bordercolor='#e6e6fa' id='DateSelect'>")
    document.write("<tr>");
    document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:11px;FONT-WEIGHT: bold'>" + myMonth[0][0] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:11px;FONT-WEIGHT: bold'>" + myMonth[0][1] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:11px;FONT-WEIGHT: bold'>" + myMonth[0][2] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:11px;FONT-WEIGHT: bold'>" + myMonth[0][3] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:11px;FONT-WEIGHT: bold'>" + myMonth[0][4] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:11px;FONT-WEIGHT: bold'>" + myMonth[0][5] + "</td>");
    document.write("<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:11px;FONT-WEIGHT: bold'>" + myMonth[0][6] + "</td>");
    document.write("</tr>");
    for (w = 1; w < 7; w++) {
    document.write("<tr>")
    for (d = 0; d < 7; d++) {
    document.write("<td align='right' width='" + iCellWidth + "' height='" + iCellHeight + "' id=calCell" + "_" + myMonth[w][d] +" style='CURSOR:Hand' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>");
    if (!isNaN(myMonth[w][d])) {
    document.write("<font id=calDateText onMouseOver='fToggleColor(this)' style='CURSOR:Hand;FONT-FAMILY:Arial;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>" + myMonth[w][d] + "</font>");
    } else {
    document.write("<font id=calDateText onMouseOver='fToggleColor(this)' style='CURSOR:Hand;FONT-FAMILY:Arial;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "' onMouseOut='fToggleColor(this)' onclick=fSetSelectedDay(this)>&nbsp;</font>");
    }
    document.write("</td>")
    }
    document.write("</tr>");
    }
    document.write("</table>")
    document.write("</center>");
    }
    function fUpdateCal(iYear, iMonth) {
    myMonth = fBuildCal(iYear, iMonth);
    objPrevElement.bgColor = "";
    document.all(sKey).bgColor="";
    document.all.calSelectedDate.value = "";
    for (w = 1; w < 7; w++) {
    for (d = 0; d < 7; d++) {
      

  3.   

    if (!isNaN(myMonth[w][d])) {
    //alert(myMonth[w][d]);
    calDateText[((7*w)+d)-7].innerText =myMonth[w][d];
    } else {
    calDateText[((7*w)+d)-7].innerText = " ";
             }
          }
       }
    if ((iMonth==(dCurMonth+1)) && (iYear==dCurYear)){
    FSel(document.all(sKey));
    }
    else{
    document.all(sKey).bgColor="";
    }
    }
    // End -->
    </script>
      <script language="JavaScript" for=window event=onload>
    <!-- Begin
    var dCurDate = new Date();
    tbSelMonth.options[dCurDate.getMonth()].selected = true;
    for (i = 0; i < tbSelYear.length; i++)
    if (tbSelYear.options[i].value == dCurDate.getFullYear())
    tbSelYear.options[i].selected = true;
    //  End -->
    </script><input type="hidden"  name="calSelectedDate" value="">
    <table id=DateTabel border="0" cellspacing="0" >
    <tr> 
    <td align="center"> 
                <select id="tbSelMonth" name="tbSelMonth" onChange='fUpdateCal(tbSelYear.value,tbSelMonth.value)'>
    <option value="1">01</option>
    <option value="2">02</option>
    <option value="3">03</option>
    <option value="4">04</option>
    <option value="5">05</option>
    <option value="6">06</option>
    <option value="7">07</option>
    <option value="8">08</option>
    <option value="9">09</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
                </select>
                <select id="tbSelYear" name="tbSelYear" onChange='fUpdateCal(tbSelYear.value, tbSelMonth.value)'>
                <%
    dim i 
    for  i=cint(year(now)-5) to  cint(year(now))+5
    %>
    <option value="<%=i%>"><%=i%></option>
    <%
    next
    %>
                </select>
             </td>
    </tr>
        <tr> 
            <td>
    <script language="JavaScript">
    var dCurDate = new Date();
    fDrawCal(dCurDate.getFullYear(), dCurDate.getMonth()+1,20,5, "11px", "", 1);
    </script>
    </td>
    </tr>
    </table>
    <script language="javascript">
    sKey="calCell_" + (dCurDate.getDate());
    FSel(document.all(sKey));
    </script>
    </BODY>
    </HTML>
      

  4.   

    多谢老兄提供的代码,好象不太合适我这里用.我要的是一点击一个输入时间的文本,就弹出一个日期选择来选择.另外:APPLET的在级别很高的,在WEB页面好象只有select和Iframe能压住它,用级是绝对不对覆盖在APPLET之上的.用iframe有时能自己隐藏掉,有时不能隐藏,我觉得这也正常吧.我也不想去弄JS的内容了,还是讨论讨论这个APPLET本身的刷新问题吧.
      

  5.   

    我是这样做的
    网页分两部分组成,
    上面是一个网页,包含一个网页的基本信息
    下面是一个applet显示区域,              
    在上面的网页里点击一个文本,就会弹出一个IFrame(包含时间选择),它会盖住下面的
    appe\fdds区域,但是也会刷新的,好像没有问题
      

  6.   

    我的有时会正常自动的那个IFRAME的时间选择会消失,但大部分情况下,它都是不消失,手动调用APPLET的刷新也不起作用,奇怪啊/