Вертикальный шатер JLabel в Java?

Мне нужно построить выделение в Java-приложении. Я думал, что JLabel - хороший контроль для работы. Я сделал что-то с горизонтальной маркировочной меткой, но сделать ее вертикальной не так легко для меня.

2 ответа

Решение

Вы можете использовать JPanel с JLabel внутри для маркировки, используя класс ниже

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MarqeuePanel extends JPanel implements Runnable
{
    private boolean IsStoped = false;
    private JLabel label;
    public MarqeuePanel(Dimension d,Point p,String text)
    {
        super();
        label = new JLabel();
        label.setText(text);
        add(label);
        setSize(d);
        setOpaque(false);
        setBackground(new Color(0,0,0,0));
        label.setLocation(0,this.getSize().height);
        Thread t = new Thread(this);
        t.start();
    }

    @Override
    public void run() 
    {
        //Marqueue
        label.setLocation(0,this.getSize().height);
        while(!IsStoped)
        {
            if(label.getLocation().y < -label.getSize().height)
            {
                label.setLocation(0,this.getSize().height);
            }
            else
            {
                int x = 0;
                int y = label.getLocation().y - 1;
                label.setLocation(x,y);
            }
            try{Thread.sleep(30);}catch(Exception exc){}
        }
    }

    public void StopMarque()
    {
        IsStoped = true;
    }
}

Просто будьте осторожны, если вам нужны новые линии, вы можете использовать теги

Попробуйте http://www.jidesoft.com/blog/2009/06/18/introduce-marqueepane-component-to-open-source-jide-common-layer/

http://tips4java.wordpress.com/2011/04/24/marquee-panel/ только горизонтальный, но может быть адаптирован и к вертикальному)

Другие вопросы по тегам