呵呵,代码较长又较乱,不知谁有耐心看没有
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()方法了.
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()方法了.
<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)> </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++) {
//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>
网页分两部分组成,
上面是一个网页,包含一个网页的基本信息
下面是一个applet显示区域,
在上面的网页里点击一个文本,就会弹出一个IFrame(包含时间选择),它会盖住下面的
appe\fdds区域,但是也会刷新的,好像没有问题