View Single Post
Old 04-11-09, 02:41 PM   #5 (permalink)
TAM
Senior Member
 
TAM's Avatar
 
Join Date: Oct 2006
Location: Mayiladurai (TN)
Posts: 243
Thanks: 8
Thanked 13 Times in 8 Posts
Rep Power: 7 TAM will become famous soon enough TAM will become famous soon enough
Re: A java swing program to marquee a text

Code:
/* Java Program which marquee the hyperlinked Labels across the Window
 * AUTHOR : TAMIZHVENDAN.S
 * FOR FURTHER DETAILS CONTACT tamizh88@gmail.com
 */

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;

public class MarqueeFrame extends JFrame implements ActionListener {

    private Timer timer;
    private MarqueePanel marqueePanel;

    // Timer Event Handler
    public void actionPerformed(ActionEvent e) {
        // move the Label in the MarqueePanel
        marqueePanel.moveLabel();
    }

    public MarqueeFrame() {

        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(d.width,d.height);
        setTitle("HyperLink MARQUEE - Developed by TamizhVendan.S, Born to Win");
        setResizable(false);

        timer = new Timer(150, this);
        marqueePanel = new MarqueePanel(timer);
        add(marqueePanel);
        timer.start();
        
    }

    public static void main(String[] args) {
        new MarqueeFrame().setVisible(true);
    }

}


class MarqueePanel extends JPanel {
    private int xLoc, yLoc;
    private Dimension dimension;
    private JLabel googleLabel;
    private JLabel yahooLabel;
    private Timer timer;

    public MarqueePanel(final Timer timer) {
        this.timer = timer;
        setLayout(null);
        dimension = Toolkit.getDefaultToolkit().getScreenSize();
        xLoc = dimension.width;
        yLoc = 0;
        googleLabel = new JLabel("Google");
        googleLabel.setForeground(Color.BLUE);
        yahooLabel = new JLabel("Yahoo");
        yahooLabel.setForeground(Color.RED);
        googleLabel.addMouseListener(new MouseAdapter() {

                public void mouseClicked(MouseEvent e) {
                    if (e.getClickCount() > 0) {
                        try {
                         Runtime.getRuntime().exec("cmd.exe /c start http://www.google.com");
                        } catch (IOException ex) {
                            System.out.println(ex.getMessage());
                        }
                    }
                }

                public void mouseEntered(MouseEvent e) {
                    timer.stop();
                }

                public void mouseExited(MouseEvent e) {
                    timer.start();
                }
                
            });
        yahooLabel.addMouseListener(new MouseAdapter() {
                
                public void mouseClicked(MouseEvent e) {
                    if (e.getClickCount() > 0) {
                        try {
                         Runtime.getRuntime().exec("cmd.exe /c start http://www.yahoo.com");
                        } catch (IOException ex) {
                            System.out.println(ex.getMessage());
                        }
                    }
                }

                public void mouseEntered(MouseEvent e) {
                    timer.stop();
                }

                public void mouseExited(MouseEvent e) {
                    timer.start();
                }
            });
        add(googleLabel);
        add(yahooLabel);
        moveLabel();
    }

    public void moveLabel() {

        Rectangle r = new Rectangle();

        r.x = xLoc;
        r.y = yLoc;
        Dimension size = googleLabel.getPreferredSize();
        r.width = size.width;
        r.height = size.height;
        googleLabel.setBounds(r);

        // Append the Width of First Label to avoid overlapping
        r.x += r.width + 5;
        size = yahooLabel.getPreferredSize();
        r.width = size.width;
        r.height = size.height;
        yahooLabel.setBounds(r);
        
        xLoc -= 5;
        if (xLoc < 0 )
            xLoc = dimension.width;
    }

 

}

hope this would satisfy your requirements !!
TAM is offline Offline   Reply With Quote
 

 ( 0-5 years ) Bsnl, Infosys, Tcs, IBM, HP are Hiring - Apply Here