Avatar billede shifter Nybegynder
22. december 2000 - 19:56 Der er 3 kommentarer og
1 løsning

Total newbie

Okay, jeg ved godt, at det her med sikkerhed lyder vildt lam, MEN... er der een, der kan hjælpe med følgende:

Jeg har fået fat i en NewsTicker, der NÆSTEN fungerer, som jeg har brug for. Uheldigvis kan den ikke klare at hente sine data eksternt - og det har jeg brug for.

Når jeg skal køre applet\'en skal jeg bl.a. definere følgende:

code=NewsTicker.class - den vil jeg gerne kunne definere med en URL (eks. http://www.test.dk/newsticker.class

  <param name=newsfile value=\"news.txt\"> - den vil jeg ligeledes gerne kunne definere med en URL.

<param name=background value=\"top.gif\"> - det samme gør sig gældende her.
   
En test af NewsTickeren, hvor den bruger lokale filer kan ses her: http://www.movieboxen.dk/nyheder/test.html

Nedenfor er den ucompilede java-fil.

Håber der er een, der kan hjælpe.

//******************************************************************************
// NewsTicker.java:    Applet
//
//******************************************************************************
import java.applet.*;
import java.awt.*;
import java.util.*;
import java.net.*;
import java.io.*;

//==============================================================================
// Main Class for applet NewsTicker
//
//==============================================================================
public class NewsTicker extends bApplet implements Runnable
{
    // General data members
    //--------------------------------------------------------------------------
    private Vector m_headers = new Vector();
    private Vector m_urls = new Vector();
    private int m_sel = -1;
    private int m_headerCount = 0;
    private int m_currHeader = 0;
    private Thread m_thread;
    private Image m_imgBuffer = null;
    private int m_scrollPos = 14;
    private boolean m_over = false;
    private boolean m_pause = false;
    private int m_cursory;
    private boolean m_activatepause = false;
    private boolean m_firstrender = true;

    // PARAMETER SUPPORT:
    //        Parameters allow an HTML author to pass information to the applet;
    // the HTML author specifies them using the <PARAM> tag within the <APPLET>
    // tag.  The following variables are used to store the values of the
    // parameters.
    //--------------------------------------------------------------------------

    // Members for applet parameters
    // <type>      <MemberVar>    = <Default Value>
    //--------------------------------------------------------------------------
    private String m_newsfile = \"news.txt\";
    private int m_x = 0;
    private int m_y = 0;
    private int m_cx = 0;
    private int m_cy = 0;
    private String m_background = \"\";
    private Color m_bgcolor;
    private Color m_textcolor;
    private Color m_hilitecolor;
    private String m_frame = null;

    // Parameter names.  To change a name of a parameter, you need only make
    // a single change.  Simply modify the value of the parameter string below.
    //--------------------------------------------------------------------------
    private final String PARAM_newsfile = \"newsfile\";
    private final String PARAM_x = \"x\";
    private final String PARAM_y = \"y\";
    private final String PARAM_cx = \"cx\";
    private final String PARAM_cy = \"cy\";
    private final String PARAM_background = \"background\";
    private final String PARAM_bgcolor = \"bgcolor\";
    private final String PARAM_textcolor = \"textcolor\";
    private final String PARAM_hilitecolor = \"hilitecolor\";
    private final String PARAM_frame = \"frame\";
    private final String PARAM_pause = \"pause\";

    // Variables. 
    //--------------------------------------------------------------------------
    private Image m_imgBackground;
    private Font m_font;

    // NewsTicker Class Constructor
    //--------------------------------------------------------------------------
    public NewsTicker()
    {
        m_font = new Font(\"Helvetica\", Font.PLAIN, 11);
    }

    // APPLET INFO SUPPORT:
    //        The getAppletInfo() method returns a string describing the applet\'s
    // author, copyright date, or miscellaneous information.
    //--------------------------------------------------------------------------
    public String getAppletInfo()
    {
        return \"Name: NewsTicker\\r\\n\" +
              \"Author: John Mannix\\r\\n\" +
              \"Created with Microsoft Visual J++ Version 1.1\";
    }

    // PARAMETER SUPPORT
    //        The getParameterInfo() method returns an array of strings describing
    // the parameters understood by this applet.
    //
    // NewsTicker Parameter Information:
    //  { \"Name\", \"Type\", \"Description\" },
    //--------------------------------------------------------------------------
    public String[][] getParameterInfo()
    {
        String[][] info =
        {
            { PARAM_newsfile, \"String\", \"News text file\" },
            { PARAM_x, \"int\", \"X position of news view\" },
            { PARAM_y, \"int\", \"Y position of news view\" },
            { PARAM_cx, \"int\", \"Width of news view\" },
            { PARAM_cy, \"int\", \"Height of news view\" },
            { PARAM_background, \"String\", \"Background image URL\" },
            { PARAM_bgcolor, \"String\", \"Background colour \'R,G,B\'\" },
            { PARAM_textcolor, \"String\", \"Text colour \'R,G,B\'\" },
            { PARAM_hilitecolor, \"String\", \"Highlight colour \'R,G,B\'\" },
            { PARAM_frame, \"String\", \"Frame used to launch URLs\" },
            { PARAM_pause, \"String\", \"Whether to activate pause\" }
        };
        return info;       
    }

    // The init() method is called by the AWT when an applet is first loaded or
    // reloaded.  Override this method to perform whatever initialization your
    // applet needs, such as initializing data structures, loading images or
    // fonts, creating frame windows, setting the layout manager, or adding UI
    // components.
    //--------------------------------------------------------------------------
    public void init()
    {
        // PARAMETER SUPPORT
        //        The following code retrieves the value of each parameter
        // specified with the <PARAM> tag and stores it in a member
        // variable.
        //----------------------------------------------------------------------
        String param;

        // newsfile: News text file
        //----------------------------------------------------------------------
        param = getParameter(PARAM_newsfile);
        if (param != null)
            m_newsfile = param;

        // x: X position of news view
        //----------------------------------------------------------------------
        param = getParameter(PARAM_x);
        if (param != null)
            m_x = Integer.parseInt(param);

        // y: Y position of news view
        //----------------------------------------------------------------------
        param = getParameter(PARAM_y);
        if (param != null)
            m_y = Integer.parseInt(param);

        // cx: Width of news view
        //----------------------------------------------------------------------
        param = getParameter(PARAM_cx);
        if (param != null)
            m_cx = Integer.parseInt(param);

        // cy: Height of news view
        //----------------------------------------------------------------------
        param = getParameter(PARAM_cy);
        if (param != null)
            m_cy = Integer.parseInt(param);

        // background: Background image URL
        //----------------------------------------------------------------------
        param = getParameter(PARAM_background);
        if (param != null)
            m_background = param;

        // pause: Whether to activate pause
        //----------------------------------------------------------------------
        param = getParameter(PARAM_pause);
        if (param != null)
        {
            m_activatepause = true;
            m_scrollPos += m_y + m_cy;
        }

        // bgcolor: Background colour
        //----------------------------------------------------------------------
        StringTokenizer t;
        String bgcolor = getParameter(PARAM_bgcolor);
        if (bgcolor != null)
        {
            t = new StringTokenizer(bgcolor, \",\");
            m_bgcolor = new Color(Integer.parseInt(t.nextToken()),
                Integer.parseInt(t.nextToken()),
                Integer.parseInt(t.nextToken()));
            setBackground(m_bgcolor);
        }

        // textcolor: Text colour
        //----------------------------------------------------------------------
        String textcolor = getParameter(PARAM_textcolor);
        if (textcolor != null)
        {
            t = new StringTokenizer(textcolor, \",\");
            m_textcolor = new Color(Integer.parseInt(t.nextToken()),
                Integer.parseInt(t.nextToken()),
                Integer.parseInt(t.nextToken()));
        }
        else
            m_textcolor = Color.black;

        // hilitecolor: Highlight colour
        //----------------------------------------------------------------------
        textcolor = getParameter(PARAM_textcolor);
        if (textcolor != null)
        {
            t = new StringTokenizer(textcolor, \",\");
            m_hilitecolor = new Color(Integer.parseInt(t.nextToken()),
                Integer.parseInt(t.nextToken()),
                Integer.parseInt(t.nextToken()));
        }
        else
            m_hilitecolor = Color.red;

        // frame: Frame used to launch URLs
        //----------------------------------------------------------------------
        m_frame = getParameter(PARAM_frame);
       
        // Load the background image and prepare it
        //----------------------------------------------------------------------
        m_imgBackground = getImage(getDocumentBase(), m_background);
        prepareImage(m_imgBackground, this);

        // Read the news file into an array
        //----------------------------------------------------------------------
        readNewsFile();
    }

    // Place additional applet clean up code here.  destroy() is called when
    // when you applet is terminating and being unloaded.
    //-------------------------------------------------------------------------
    public void destroy()
    {
    }

    // NewsTicker Paint Handler
    //--------------------------------------------------------------------------
    public void paint(Graphics g)
    {
        if (m_imgBuffer == null)
        {
            m_imgBuffer = createImage(size().width, size().height);
            render();
        }

        g.drawImage(m_imgBuffer, 0, 0, null);
    }

    public void render()
    {
        if (m_imgBuffer != null)
        {
            Graphics g = m_imgBuffer.getGraphics();
            g.setColor(m_bgcolor);
            g.fillRect(0, 0, size().width, size().height);
            g.drawImage(m_imgBackground, 0, 0, this);
            g.clipRect(m_x, m_y, m_cx, m_cy);
            g.translate(0, m_scrollPos);
            g.setColor(m_textcolor);
            g.setFont(m_font);

            String line;
            int y = m_y, i;
            m_pause = false;
            boolean reset = false;
            m_sel = -1;

            while (y + m_scrollPos < m_y + m_cy + 34)
            {
                for (i = 0; i < m_headerCount; i++)
                {
                    if (m_over)
                    {
                        line = (String)m_headers.elementAt(i);
                        int height = 0, index = 0;
                        while (line.indexOf(\'|\', index) > 0)
                        {
                            height+=14;
                            index = line.indexOf(\'|\', index)+1;
                        }

                        if (m_cursory+14 > y+m_scrollPos && m_cursory < y+height+m_scrollPos)
                        {
                            m_sel = i;
                            g.setColor(m_hilitecolor);
                        }
                    }

                    if (y + m_scrollPos == m_y + 14) m_pause = true;

                    StringTokenizer t = new StringTokenizer((String)m_headers.elementAt(i), \"|\");
                    while (t.hasMoreTokens())
                    {
                        line = t.nextToken();
                        g.drawString(line, m_x, y);
                        y += 14;
                    }
                    y += 24;

                    g.setColor(m_textcolor);
                }

                if (y + m_scrollPos < m_y) reset = true;
            }

            if (reset) m_scrollPos = 0;
        }
    }

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

    // The start() method is called when the page containing the applet
    // first appears on the screen. The AppletWizard\'s initial implementation
    // of this method starts execution of the applet\'s thread.
    //--------------------------------------------------------------------------
    public void start()
    {
        m_thread = new Thread(this);
        m_thread.start();
    }
   
    // The stop() method is called when the page containing the applet is
    // no longer on the screen. The AppletWizard\'s initial implementation of
    // this method stops execution of the applet\'s thread.
    //--------------------------------------------------------------------------
    public void stop()
    {   
        m_thread.stop();
    }

    // The run() method is called when by m_thread and implements the
    // header animations between the display of each news item.
    //--------------------------------------------------------------------------
    public void run()
    {
        try
        {
            while (true)
            {
                if (m_pause && m_activatepause) m_thread.sleep(4000);
                else if (m_activatepause) m_thread.sleep(20);
                else m_thread.sleep(100);
                //m_currHeader = (m_currHeader+1) % m_headerCount;
                m_scrollPos--;
                repaint();
            }
        }
        catch (InterruptedException e)
        {
        }
    }


    // MOUSE SUPPORT:
    // The mouseDown() method is called if the mouse button is pressed
    // while the mouse cursor is over the applet\'s portion of the screen.
    //--------------------------------------------------------------------------
    public boolean mouseDown(Event evt, int x, int y)
    {
        if (m_sel >= 0 && m_sel < m_headerCount)
        {
            if (m_frame == null)
                getAppletContext().showDocument((URL)m_urls.elementAt(m_sel));
            else
                getAppletContext().showDocument((URL)m_urls.elementAt(m_sel), m_frame);
        }

        return true;
    }

    // MOUSE SUPPORT:
    // The mouseUp() method is called if the mouse button is released
    // while the mouse cursor is over the applet\'s portion of the screen.
    //--------------------------------------------------------------------------
    public boolean mouseUp(Event evt, int x, int y)
    {
        return true;
    }

    public boolean mouseEnter(Event evt, int x, int y)
    {
        stop();
        m_over = true;
        m_cursory = y;
        repaint();
        return true;
    }

    public boolean mouseExit(Event evt, int x, int y)
    {
        start();
        m_over = false;
        m_cursory = y;
        repaint();
        return true;
    }

    public boolean mouseMove(Event evt, int x, int y)
    {
        m_cursory = y;
        repaint();
        return true;
    }

    // Read the news file into m_headers, one line per entry.
    //-------------------------------------------------------------------------
    private void readNewsFile()
    {
        String line;
        int count = 0;
       
        try
        {
            URL url = new URL(getCodeBase(), m_newsfile);

            try
            {
                DataInputStream in = new DataInputStream(url.openStream());
   
                do
                {
                    line = in.readLine();
                    if (line != null)
                    {
                        StringTokenizer t = new StringTokenizer(line, \"~\");
                        m_headers.addElement(t.nextToken());
                        if (t.hasMoreTokens())
                            m_urls.addElement(new URL(getDocumentBase(), t.nextToken()));
                        m_headerCount++;
                    }
                } while (line != null);
            }
            catch (IOException e)
            {
            }
        }
        catch (MalformedURLException e)
        {
            System.err.println(\"Could not open news feed file.\");
        }
    }
}
Avatar billede mpultz Nybegynder
22. december 2000 - 20:11 #1
Du skal bruge codebase attributten. Denne fortæller browseren hvor applet koden, dvs. class eller jar filen, er placeret.

F.eks.
<APPLET CODE=NewsTicker.class CODEBASE=http://www.test.dk/ ... </APPLET>

Se f.eks. http://java.sun.com/docs/books/tutorial/applet/appletsonly/html.html for mere information.
Avatar billede shifter Nybegynder
22. december 2000 - 21:08 #2
Det er desværre ikke nok. Som du kan se på: http://www.a-bjerg.dk/test2.html har jeg tilføjet codebasen, men den vil ikke hente, hverken det ene eller det andet! :(
Avatar billede shifter Nybegynder
22. december 2000 - 21:22 #3
Sorry det kom ski til at du alligevel. Svar lige igen, så du kan få dine points!
Avatar billede mpultz Nybegynder
26. december 2000 - 21:09 #4
Shifter: Lyder godt, altid rart at kunne hjælpe.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester