• 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
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

displaying scroll messages at the bottom of page

 
Ranch Hand
Posts: 68
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi,


i have written source code for scrolling text messages from right to left using applets,but the requirement is that the text should be scrolled from bottom of the page and it has start from corner of window applet.Please,can anyone suggest me on how to do this.


here is the source code;

import java.awt.*;
import java.applet.*;
import java.net.URL;

public class StringWalk extends Applet implements Runnable {

/*=======================
* Variable Declarations
*=======================*/

final static int MAX_SIZE = 100;
final static Cursor HAND = new Cursor(Cursor.HAND_CURSOR);
final static Cursor DEFAULT = new Cursor(Cursor.DEFAULT_CURSOR);

boolean isMoving;
int xx; // text location
int ntext; // number of text
int text_width; // text width
int width; // applet width
int height; // applet height
int delay; // time delay
int fontsize; // size of font
int mouse_x; // mouse x coordinate
int mouse_y; // mouse y coordinate
int selected; // selected caption

String[] s; // captions
String[] url; // urls
String[] target; // targets

Font font; // font face
FontMetrics fm; // font metrics
Thread runner;
Color fgcolor, bgcolor, accolor, bdcolor;

Image offscrImg; // double buffer image
Graphics offscr; // double buffer graphics


/*===========================
* Set Font and Color Method
*===========================*/

public void setFont() {
String fontface = getParameter("fontface");
if (fontface == null)
fontface = "Times Roman";

try { fontsize = Integer.parseInt(getParameter("fontsize")); }
catch (Exception e) { fontsize = 12; }

String fontstyle = getParameter("fontstyle");
if (fontstyle == null || fontstyle.equals("plain"))
font = new Font(fontface, Font.PLAIN, fontsize);
else if (fontstyle.equals("bold"))
font = new Font(fontface, Font.BOLD, fontsize);
else
font = new Font(fontface, Font.ITALIC, fontsize);

fm = offscr.getFontMetrics(font);
}

public void setColor() {
String c1 = getParameter("bgcolor");
String c2 = getParameter("fgcolor");
String c3 = getParameter("accolor");
String c4 = getParameter("bdcolor");

if (c1 == null) c1 = "255,255,255";
if (c2 == null) c2 = "000,000,000";
if (c3 == null) c3 = "255,000,000";
if (c4 == null) c4 = "150,150,150";

bgcolor = new Color(Integer.parseInt(c1.substring(0,3)),
Integer.parseInt(c1.substring(4,7)),
Integer.parseInt(c1.substring(8,11)));
fgcolor = new Color(Integer.parseInt(c2.substring(0,3)),
Integer.parseInt(c2.substring(4,7)),
Integer.parseInt(c2.substring(8,11)));
accolor = new Color(Integer.parseInt(c3.substring(0,3)),
Integer.parseInt(c3.substring(4,7)),
Integer.parseInt(c3.substring(8,11)));
bdcolor = new Color(Integer.parseInt(c4.substring(0,3)),
Integer.parseInt(c4.substring(4,7)),
Integer.parseInt(c4.substring(8,11)));
}

/*===================
* Initialize Method
*===================*/

public void init() {
isMoving = true;
runner = new Thread(this);
width = getSize().width;
height = getSize().height;
s = new String[MAX_SIZE];
url = new String[MAX_SIZE];
target = new String[MAX_SIZE];

offscrImg = createImage(width, height);
offscr = offscrImg.getGraphics();

runner.start();
setFont();
setColor();
try { delay = Integer.parseInt(getParameter("delay")); }
catch (Exception e) { delay = 50; }

String text;
ntext = text_width = xx = 0;
while ((text = getParameter("caption" + ntext)) != null) {
s[ntext] = text;
url[ntext] = getParameter("url" + ntext);
target[ntext] = getParameter("target" + ntext);
if (target[ntext] == null)
target[ntext] = "_parent";

text_width += fm.stringWidth(s[ntext]) + 20;
ntext++;
}
mouse_x = mouse_y = -text_width;

setSize(width,height);
offscr.setFont(font);
}

/*=========================
* Paint and Update Method
*=========================*/

public void paint(Graphics g) {
int c = 0;
int i = xx;
int h = (height + fontsize)/2 ;
selected = 1;
boolean f = false;

while (s[c] != null && i < width) {
int w = fm.stringWidth(s[c]);
offscr.setColor(fgcolor);
if (mouse_x >= i && mouse_x <= i + w
&& mouse_y <= h && mouse_y >= h - fontsize) {
offscr.setColor(accolor);
offscr.drawLine(i, h , i + w, h );
f = true;
selected = c;
}
offscr.drawString(s[c], i, h);

i += w + 80;
if (++c >= ntext)
c = 0;
}
if (f)
setCursor(HAND);
else
setCursor(DEFAULT);

g.drawImage(offscrImg, 0, 0, this);
offscr.clearRect(0,0, getSize().width, getSize().height);
offscr.setColor(bgcolor);
offscr.fillRect(0, 0, getSize().width, getSize().height);
offscr.setColor(bdcolor);
offscr.drawRect(0, 0, getSize().width+1, getSize().height+1);

if (isMoving)
xx--;
if (i < -text_width)
xx = 0;
}

public void update(Graphics g) {
paint(g);
}

/*==============
* Mouse Method
*==============*/

public boolean mouseEnter(Event evt, int x, int y) {
isMoving = false;
return true;
}

public boolean mouseExit(Event evt, int x, int y) {
isMoving = true;
mouse_x = -text_width;
mouse_y = -text_width;
return true;
}

public boolean mouseMove(Event evt, int x, int y) {
mouse_x = x++;
mouse_y = y++;
return true;
}

public boolean mouseUp(Event evt, int x, int y) {
if (selected != -1 && url[selected] != null) {
try {
getAppletContext().showDocument(new URL(url[selected]), target[selected]);
}
catch (Exception e) { }
}
return true;
}

/*===============
* Thread Method
*===============*/

public void run() {
while(true) {
try { runner.sleep(delay); }
catch (Exception e) { }
repaint();
}
}
}



Thanks in Advance,
regards,
Siva Sankar.
 
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
too much unformatted code to read through (hint: use the code tags),
so here's a simple example from your description



you should also ask for your duplicated post to be closed
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic