Вертикальный шатер 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://tips4java.wordpress.com/2011/04/24/marquee-panel/ только горизонтальный, но может быть адаптирован и к вертикальному)