import java.awt.FontMetrics;
import javax.swing.JLabel;
JLabel label = JLabel("test Label ");
FontMetrics metrics = label.getFontMetrics(label.getFont);
textH = metrics.getHeight; //串高只和字体有关
textW = metrics.Width(label.getText); //串宽
通常情况下个空格占3个像素
具体代码如下:
Test.java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public Test {
private JFrame frame;
private String scrolledText;
private String str = "滚动文字 Demo";
/** *//**
* Launch the application
* @param args
*/
public void (String args) {
try {
Test window = Test;
window.frame.Visible(true);
} catch (Exception e) {
e.prStackTrace;
}
}
/** *//**
* Create the application
*/
public Test {
initialize;
}
/** *//**
* Initialize the contents of the frame
*/
private void initialize {
frame = JFrame;
frame.Bounds(100, 100, 500, 375);
frame.DefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = JPanel;
panel.Background(Color.WHITE);
panel.Layout( BorderLayout);
frame.getContentPane.add(panel, BorderLayout.NORTH);
final JLabel label = JLabel;
label.Text("New JLabel");
panel.add(label);
label_scrolledText(label);
// 当窗体变化时要重新对label滚动文字进行设置
frame.addComponentListener( ComponentAdapter {
public void componentResized(ComponentEvent arg0) {
label_scrolledText(label);
}
});
}
/** *//**
* 滚动文字
* @param label
*/
public void label_scrolledText(JLabel label) {
this.scrolledText = this.str;
label.Text(scrolledText);
FontMetrics metrics = label.getFontMetrics(label.getFont);
textW = metrics.Width(label.getText);
Dimension frameSize = frame.getSize;
for ( i = 1; i <= (frameSize.width - textW) / 3 - 3; i)
scrolledText " ";
label.Text(scrolledText);
Thread thread = Thread( TextChanger(label));
thread.start;
}
}TextChanger.java import javax.swing.JLabel;
public TextChanger implements Runnable {
private JLabel label;
public TextChanger(JLabel label) {
this.label = label;
}
public void run {
try {
while (true) {
String text = label.getText;
(text.length > 1) {
text = text.sub(1, text.length) + text.charAt(0);
label.Text(text);
label.repa;
}
Thread.sleep(50);
}
} catch (InterruptedException ex) {
ex.prStackTrace;
}
}
}
最新评论