• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • Liutauras Vilda
  • Jeanne Boyarsky
  • paul wheaton
Sheriffs:
  • Ron McLeod
  • Devaka Cooray
  • Henry Wong
Saloon Keepers:
  • Tim Holloway
  • Stephan van Hulst
  • Carey Brown
  • Tim Moores
  • Mikalai Zaikin
Bartenders:
  • Frits Walraven

WHY DONT APPLETS EXECUTE???

 
Ranch Hand
Posts: 750
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi, I've been looking at the applets on the sun website, and I'm
trying to get them to run on NetBeans 3.5
I've tried invoking the applet with an HTML file, and also a JSP(using the jsp-plugin>, but I keep getting a ClassNotFoundException.

I've been trying to run the BarChart.java applet, as shown below.
This is placed in the classes directory of the WEB-INF directory as usual.
Also I'm using an HTML file to invoke the applet as shown here:

If anyone can explain why this doesn't work, that would be very helpful,
Thanks.





Here is the Applet BarChart.java
[CODE]
import java.awt.*;
import java.applet.Applet;

public class BarChart extends Applet
{
private static final int VERTICAL = 0;
private static final int HORIZONTAL = 1;

private static final int SOLID = 0;
private static final int STRIPED = 1;

private int orientation;
private String title;
private Font font;
private FontMetrics metrics;
private int fontHeight = 15;
private int columns;
private int values[];
private Color colors[];
private String labels[];
private int styles[];
private int scale = 10;
private int maxLabelWidth = 0;
private int barSpacing = 10;
private int maxValue = 0;

public void init()
{

getSettings();

values = new int[columns];
labels = new String[columns];
styles = new int[columns];
colors = new Color[columns];

for (int i=0; i < columns; i++) {
parseValue(i);
parseLabel(i);
parseStyle(i);
parseColor(i);
}
}

private void getSettings() {
font = new java.awt.Font("Courier", Font.BOLD, 12);
metrics = getFontMetrics(font);

title = getParameter("title");
if (title == null) {
title = "Chart";
}

String temp = getParameter("columns");
if (temp == null) {
columns = 5;
} else {
columns = Integer.parseInt(temp);
}

temp = getParameter("scale");
if (temp == null) {
scale = 10;
} else {
scale = Integer.parseInt(temp);
}

temp = getParameter("orientation");
if (temp == null) {
orientation = VERTICAL;
} else if (temp.equalsIgnoreCase("horizontal")) {
orientation = HORIZONTAL;
} else {
orientation = VERTICAL;
}
}

private void parseValue(int i) {
String temp = getParameter("C" + (i+1));
try {
values[i] = Integer.parseInt(temp);
} catch (NumberFormatException e) {
values[i] = 0;
} catch (NullPointerException e) {
values[i] = 0;
}
maxValue = Math.max(maxValue, values[i]);
}

private void parseLabel(int i) {
String temp = getParameter("C" + (i+1) + "_label");
if (temp==null) {
labels[i] = "";
} else {
labels[i] = temp;
}
maxLabelWidth = Math.max(metrics.stringWidth
((String) (labels[i])), maxLabelWidth);
}

private void parseStyle(int i) {
String temp = getParameter("C" + (i+1) + "_style");
if (temp == null || temp.equalsIgnoreCase("solid")) {
styles[i] = SOLID;
} else if (temp.equalsIgnoreCase("striped")) {
styles[i] = STRIPED;
} else {
styles[i] = SOLID;
}
}

private void parseColor(int i) {
String temp = getParameter("C" + (i+1) + "_color");
if (temp != null) {
temp = temp.toLowerCase();
if (temp.equals("red")) {
colors[i] = Color.red;
} else if (temp.equals("green")) {
colors[i] = Color.green;
} else if (temp.equals("blue")) {
colors[i] = Color.blue;
} else if (temp.equals("pink")) {
colors[i] = Color.pink;
} else if (temp.equals("orange")) {
colors[i] = Color.orange;
} else if (temp.equals("magenta")) {
colors[i] = Color.magenta;
} else if (temp.equals("cyan")) {
colors[i] = Color.cyan;
} else if (temp.equals("white")) {
colors[i] = Color.white;
} else if (temp.equals("yellow")) {
colors[i] = Color.yellow;
} else if (temp.equals("gray")) {
colors[i] = Color.gray;
} else if (temp.equals("darkGray")) {
colors[i] = Color.darkGray;
} else {
colors[i] = Color.gray;
}
} else {
colors[i] = Color.gray;
}
}

public void paint(Graphics g) {
// draw the title centered at the bottom of the bar graph
g.setColor(Color.black);
g.setFont(font);

g.drawRect(0, 0, getSize().width - 1, getSize().height - 1);

int titleWidth = metrics.stringWidth(title);
int cx = Math.max((getSize().width - titleWidth) / 2, 0);
int cy = getSize().height - metrics.getDescent();
g.drawString(title, cx, cy);

// draw the bars and their titles
if(orientation == HORIZONTAL) {
paintHorizontal(g);
} else { // VERTICAL
paintVertical(g);
}
}

private void paintHorizontal(Graphics g) {
// x and y coordinates to draw/write to
int cx, cy;
int barHeight = metrics.getHeight();

for (int i = 0; i < columns; i++) {

// set the X coordinate for this bar and label and center it
int widthOfItems = maxLabelWidth + 3 + (maxValue * scale) + 5
+ metrics.stringWidth(Integer.toString(maxValue));
cx = Math.max((getSize().width - widthOfItems) / 2, 0);

// set the Y coordinate for this bar and label
cy = getSize().height - metrics.getDescent() - metrics.getHeight()
- barSpacing - ((columns - i - 1) * (barSpacing + barHeight));

// draw the label
g.setColor(Color.black);
g.drawString(labels[i], cx, cy);
cx += maxLabelWidth + 3;


// draw the shadow
g.fillRect(cx + 4, cy - barHeight + 4,
(values[i] * scale), barHeight);

// draw the bar
g.setColor(colors[i]);
if (styles[i] == STRIPED) {
for (int k = 0; k <= values[i] * scale; k += 2) {
g.drawLine(cx + k, cy - barHeight, cx + k, cy);
}
} else { // SOLID
g.fillRect(cx, cy - barHeight,
(values[i] * scale) + 1, barHeight + 1);
}
cx += (values[i] * scale) + 4;

// draw the value at the end of the bar
g.setColor(g.getColor().darker());
g.drawString(Integer.toString(values[i]), cx, cy);
}
}

private void paintVertical(Graphics g) {
int barWidth = maxLabelWidth;

for (int i = 0; i < columns; i++) {

// X coordinate for this label and bar (centered)
int widthOfItems = (barWidth + barSpacing) * columns - barSpacing;
int cx = Math.max((getSize().width - widthOfItems) / 2, 0);
cx += (maxLabelWidth + barSpacing) * i;

// Y coordinate for this label and bar
int cy = getSize().height - metrics.getHeight()
- metrics.getDescent() - 4;

// draw the label
g.setColor(Color.black);
g.drawString(labels[i], cx, cy);
cy -= metrics.getHeight() - 3;

// draw the shadow
g.fillRect(cx + 4, cy - (values[i] * scale) - 4,
barWidth, (values[i] * scale));

// draw the bar
g.setColor(colors[i]);
if (styles[i] == STRIPED) {
for (int k=0; k <= values[i] * scale; k+=2) {
g.drawLine(cx, cy - k,
cx + barWidth, cy - k);
}
} else {
g.fillRect(cx, cy - (values[i] * scale),
barWidth + 1, (values[i] * scale) + 1);
}
cy -= (values[i] * scale) + 5;

// draw the value on top of the bar
g.setColor(g.getColor().darker());
g.drawString(Integer.toString(values[i]), cx, cy);
}
}

public String getAppletInfo() {
return "Title: Bar Chart \n"
+ "Author: Sami Shaio \n"
+ "A simple bar chart demo.";
}

public String[][] getParameterInfo() {
String[][] info = {
{"title", "string", "The title of bar graph. Default is 'Chart'"},
{"scale", "int", "The scale of the bar graph. Default is 10."},
{"columns", "int", "The number of columns/rows. Default is 5."},
{"orientation", "{VERTICAL, HORIZONTAL}",
"The orienation of the bar graph. Default is VERTICAL."},
{"c#", "int", "Subsitute a number for #. "
+ "The value/size of bar #. Default is 0."},
{"c#_label", "string", "The label for bar #. "
+ "Default is an empty label."},
{"c#_style", "{SOLID, STRIPED}", "The style of bar #. "
+ "Default is SOLID."},
{"c#_color", "{RED, GREEN, BLUE, PINK, ORANGE, MAGENTA, CYAN, "
+ "WHITE, YELLOW, GRAY, DARKGRAY}",
"The color of bar #. Default is GRAY."}
};
return info;
}
}
 
Rancher
Posts: 43081
77
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Please don't SHOUT, this is a friendly place here.

Applet classes don't go into the WEB-INF/classes directory, they go in the same directory as the HTML page that displays the applet.
 
colin shuker
Ranch Hand
Posts: 750
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Really? Thanks, I never knew that.
I just assumed they went in WEB-INF/classes because servlets and normal
java classes do.
But saying that, JSPs don't, and these turn into servlets really anyway.
Thanks I'll give it a try.
 
I can't beleive you just said that. Now I need to calm down with this tiny ad:
Gift giving made easy with the permaculture playing cards
https://coderanch.com/t/777758/Gift-giving-easy-permaculture-playing
reply
    Bookmark Topic Watch Topic
  • New Topic