idea上如何跑java程序_java – 如何在Intellij IDEA中运行Applet?

我正在尝试为我的网络课程运行

these applets.当我尝试在浏览器中从链接运行这些时,他们什么也没做.所以我决定尝试在IntelliJ中编译它们,但是当我运行代码时它没有做任何事情.没有返回错误消息.我从源代码中更改代码的唯一方法是添加main方法并删除包声明.以下是我试图运行的Applet:

JAVA代码

///

//LineSimApllet

//written by David Grangier,Institut Eurecom,France

//david.grangier@eurecom.fr

///

//imports

import java.awt.*;

import java.awt.event.*;

import java.awt.image.*;

import java.applet.*;

import java.util.*;

//Applet Class

public class LineSimApplet extends Applet {

//buttons

Button start = new Button("Start");

Button stop = new Button("Reset");

//features lists

MyChoice length = new MyChoice(new String[]{"10 km","100 km","1000 km"},new double[]{10E3,100E3,1E6},3);

MyChoice rate = new MyChoice(new String[]{"512 kps","1 Mbps","10 Mbps","100 Mbps"},new double[]{512E3,1E6,10E6,100E6},2);

MyChoice size = new MyChoice(new String[]{"100 Bytes","500 Bytes","1 kBytes"},new double[]{8E2,4E3,8E3},1);

//to simulate time

Thread timerThread;

TickTask timerTask;

boolean simulationRunning = false;

//communication line

Line myLine;

public void init() {

try {

setBackground(Color.white);

add(new Label("Length",Label.RIGHT));

add(length);

add(new Label("Rate",Label.RIGHT));

add(rate);

add(new Label("Packet size",Label.RIGHT));

add(size);

//start

start.addActionListener(

new ActionListener() {

public void actionPerformed(ActionEvent event) {

launchSim();

}

});

add(start);

//stop

Button stop = new Button("Reset");

stop.addActionListener(

new ActionListener() {

public void actionPerformed(ActionEvent event) {

stopSim();

//clear line

myLine.sendTime(0);

//redraw cleared line

LineSimApplet.this.repaint();

}

});

add(stop);

//line

myLine = new Line(40,50,450,10);

} catch (Exception e) {

e.printStackTrace();

}

}

public void paint(Graphics g) {

update(g); // eliminate flashing : update is overriden

}

public void update(Graphics g) { //work on a offscreen image

Dimension offDimension = getSize();

Image offImage = createImage(offDimension.width,offDimension.height);

Graphics offGraphics = offImage.getGraphics();

myLine.drawLine(offGraphics);

//sender

offGraphics.setColor(Color.blue);

offGraphics.fillRect(10,40,30,30);

offGraphics.setColor(Color.black);

offGraphics.drawString("Sender",5,90);

offGraphics.drawRect(10,30);

//receiver

offGraphics.setColor(Color.blue);

offGraphics.fillRect(490,30);

offGraphics.setColor(Color.black);

offGraphics.drawString("Receiver",485,90);

offGraphics.drawRect(490,30);

offGraphics.drawString("Propagation speed : 2.8 x 10^8 m/sec",175,105);

//display offscreen image

g.drawImage(offImage,this);

}

private void launchSim() {

setupEnabled(false);

//setup line

myLine.setup(length.getVal(),rate.getVal());

myLine.emitPacket(size.getVal(),0);

//setup timer

timerTask = new TickTask(1E-5,myLine.totalTime());

timerThread = new Thread(timerTask);

//start simulation

simulationRunning = true;

timerThread.start();

}

private void stopSim() {

timerTask.endNow();

simulationRunning = false;

setupEnabled(true);

}

public void setupEnabled(boolean value) {

start.setEnabled(value);

length.setEnabled(value);

rate.setEnabled(value);

size.setEnabled(value);

}

//my choice

class MyChoice extends Choice {

private double vals[];

public MyChoice(String items[],double values[],int defaultValue) {

for (int i = 0; i < items.length; i++) {

super.addItem(items[i]);

}

vals = values;

select(defaultValue - 1);

}

public double getVal() {

return vals[super.getSelectedIndex()];

}

}

//tickTask

class TickTask implements Runnable {

private double counter;

private double length;

private double tick;

public TickTask(double t,double l) {

length = l;

tick = t;

counter = 0;

}

public void run() {

while (LineSimApplet.this.simulationRunning) {

counter += tick;

LineSimApplet.this.myLine.sendTime(counter);

LineSimApplet.this.repaint();

if (counter >= length) {

LineSimApplet.this.myLine.clearPackets();

LineSimApplet.this.timerThread.suspend();

}

try {

LineSimApplet.this.timerThread.sleep(50);

} catch (Exception e) {

}

}

}

public void endNow() {

length = counter;

}

}

}

//Line class

class Line {

//graphic variables

private int gX;

private int gY;

private int gWidth;

private int gHeight;

//characteristic variables

final double celerity = 2.8E+8;

private double length;

private double rate;

//simulation variables

private double time;

private Packet myPacket;

public Line(int x,int y,int w,int h) {

//graphic init

gX = x;

gY = y;

gWidth = w;

gHeight = h;

}

public void setup(double l,double r) {

length = l;

rate = r;

}

void sendTime(double now) {

time = now; //update time

removeReceivedPackets(now);

}

void emitPacket(double s,double eT) {

myPacket = new Packet(s,eT);

}

private void removeReceivedPackets(double now) {

if (!(myPacket == null)) {

if (now > myPacket.emissionTime + (myPacket.size / rate) + length * celerity) {

clearPackets();

}

}

}

public void clearPackets() {

myPacket = null;

}

public double totalTime() {

double emmissionTime = (myPacket.size / rate);

double onLineTime = (length / celerity);

return (emmissionTime + onLineTime);

}

public void drawLine(Graphics g) {

g.setColor(Color.white);

g.fillRect(gX,gY + 1,gWidth,gHeight - 2);

g.setColor(Color.black);

g.drawRect(gX,gY,gHeight);

g.setColor(Color.red);

g.drawString(timeToString(time),gX + gWidth / 2 - 10,gY + gHeight + 15);

drawPackets(g);

}

private void drawPackets(Graphics g) {

if (!(myPacket == null)) {

double xfirst;

double xlast;

//compute time units

xfirst = time - myPacket.emissionTime;

xlast = xfirst - (myPacket.size / rate);

//compute position

xfirst = xfirst * celerity * gWidth / length;

xlast = xlast * celerity * gWidth / length;

if (xlast < 0) {

xlast = 0;

}

if (xfirst > gWidth) {

xfirst = gWidth;

}

//draw

g.setColor(Color.red);

g.fillRect(gX + (int) (xlast),(int) (xfirst - xlast),gHeight - 2);

}

}

static private String timeToString(double now) {

String res = Double.toString(now * 1000);

int dot = res.indexOf('.');

String deci = res.substring(dot + 1) + "000";

deci = deci.substring(0,3);

String inte = res.substring(0,dot);

return inte + "." + deci + " ms";

}

public static void main(String[] args) {

LineSimApplet ls = new LineSimApplet();

ls.init();

}

}

class Packet {

double size;

double emissionTime;

Packet(double s,double eT) {

size = s;

emissionTime = eT;

}

}

如何使用IntelliJ运行此applet?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值