|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。
起首要把握一个观点:一个字符串在盘算机屏幕中所占的像素,例如说取一个JLabel内里的Text所占的宽和高,办法以下:(次要用到FontMetrics类)
import java.awt.FontMetrics;
import javax.swing.JLabel;
JLabel label = new JLabel("test Label ");
FontMetrics metrics = label.getFontMetrics(label.getFont());
int textH = metrics.getHeight(); //字符串的高,只和字体有关
int textW = metrics.stringWidth(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 class Test {
private JFrame frame;
private String scrolledText;
private String str = "转动笔墨 Demo";
/** *//**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
Test window = new Test();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/** *//**
* Create the application
*/
public Test() {
initialize();
}
/** *//**
* Initialize the contents of the frame
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 500, 375);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel();
panel.setBackground(Color.WHITE);
panel.setLayout(new BorderLayout());
frame.getContentPane().add(panel, BorderLayout.NORTH);
final JLabel label = new JLabel();
label.setText("New JLabel");
panel.add(label);
label_scrolledText(label);
// 当窗体变更时要从头对label的转动笔墨举行设置
frame.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent arg0) {
label_scrolledText(label);
}
});
}
/** *//**
* 转动笔墨
* @param label
*/
public void label_scrolledText(JLabel label) {
this.scrolledText = this.str;
label.setText(scrolledText);
FontMetrics metrics = label.getFontMetrics(label.getFont());
int textW = metrics.stringWidth(label.getText());
Dimension frameSize = frame.getSize();
for (int i = 1; i <= (frameSize.width - textW) / 3 - 3; i++)
scrolledText += " ";
label.setText(scrolledText);
Thread thread = new Thread(new TextChanger(label));
thread.start();
}
}
TextChanger.java
import javax.swing.JLabel;
public 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);
label.repaint();
}
Thread.sleep(50);
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
终极的效果如图所示:
<br>
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。 |
|