我想在jbuilder做的系统的欢迎窗口上的jlabel上做一个滚动文本,即"欢迎光临"这几个字在jlabel滚动显示,
请问谁有相关代码?或指点一下??

解决方案 »

  1.   

    用多线程吧。。 class ScrollText extends Thread
    {
    String str = "        欢迎光临!";
    public ScrollText()
    {
    this.start();
    }

    public void run()
    {
    str = str.substring(1,str.length())+str.charAt(0);
    this.lable1.setText(str);//这是个内部内,这里的lable1就是你的那个lable
    }
    }
    临时写的,不知道对不对,没测试。。
      

  2.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.datatransfer.*;
    import java.io.*;public class Test extends JPanel {
        private static final long serialVersionUID = 4767050156491994899L;
        private JLabel            label;
        private String            scrolledText;    public Test() {
            scrolledText = "滚动文字 Demo";
            label = new JLabel(new String(scrolledText));
            this.add(label);        Thread thread = new Thread(new TextChanger(label));
            thread.start();
        }    // @Override
        // protected void paintComponent(Graphics g) {
        // super.paintComponent(g);
        //
        // Graphics2D g2d = (Graphics2D) g;
        //
        // }    private static void createAndShowGUI() {
            JFrame frame = new JFrame("Frame");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(400, 400);        frame.getContentPane().add(new Test());        frame.setVisible(true);
        }    public static void main(String[] args) throws Exception {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    Test.createAndShowGUI();
                }
            });
        }
    }class TextChanger implements Runnable {
        private JLabel label;    public TextChanger(JLabel label) {
            this.label = label;
        }    public void run() {
            try {
                while (true) {
                    String text = label.getText();
                    if (text.length() > 1) {
                        text = text.substring(1, text.length()) + text.charAt(0);
                        label.setText(text);                    // Get the frame
                        Component frame = SwingUtilities.getRoot(label);
                        if (frame != null && (frame instanceof JFrame)) {
                            ((JFrame)frame).setTitle(text);
                        }                    label.repaint();
                    }                Thread.sleep(300);
                }
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }