java里面有一个叫做Timer的东西
成都创新互联秉承实现全网价值营销的理念,以专业定制企业官网,网站建设、网站制作,小程序定制开发,网页设计制作,移动网站建设,全网营销推广帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。
代码找到了:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
////////////////////////////////////////////////////////////
public class AnimationDemo extends JFrame{
AnimationDemo(){
add(new MPanel("我是要移动的文字"));
}
////////////////////////////////////////////////////////////
public static void main(String[] args){
JFrame frame=new AnimationDemo();
frame.setTitle("AnimationDemo");
frame.setSize(280, 100);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
/////////////////////////////////////////////////////////////
static class MPanel extends JPanel{
private String message="welcome to java!";
private int xZuoBiao=0;
private int yZuoBiao=30;
//...........................................................
public MPanel(String message){
this.message=message;
Timer timer=new Timer(100,new TimerListener());
timer.start();
}
//............................................................
protected void paintComponent(Graphics g){
super.paintComponent(g);
if(xZuoBiaogetWidth()){
xZuoBiao=-20;
}
xZuoBiao+=10;
g.drawString(message, xZuoBiao, yZuoBiao);
}
//.............................................................
class TimerListener implements ActionListener{
public void actionPerformed(ActionEvent e){
repaint();
}
}
}
}
这个叫跑马灯效果,的确需要Timer,给你一个示例做参考:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.HeadlessException;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JViewport;
import javax.swing.Timer;
public class Test84 extends JFrame {
private Timer timer;
private JLabel view;
private JViewport window;
public static void main(String[] args)
{
JFrame frm = new Test84("跑马灯");
frm.setDefaultCloseOperation(EXIT_ON_CLOSE);
frm.pack();
frm.setVisible(true);
}
public Test84(String title) throws HeadlessException
{
super(title);
initComponents();
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e)
{
anchor = new Point();
anchor.x = -window.getExtentSize().width;
timer.start();
}
});
timer = new Timer(100, new ActionListener() {
public void actionPerformed(ActionEvent e)
{
animate();
}
});
timer.setInitialDelay(0);
}
private void initComponents()
{
String s = JOptionPane.showInputDialog(null, "请输入要实现效果的文字:");
view = new JLabel(s);
view.setFont(Font.decode("Dialog-BOLD-36"));
view.setForeground(Color.BLUE);
window = new JViewport();
window.setView(view);
getContentPane().add(window);
}
Point anchor;
private void animate()
{
Dimension extSize = window.getExtentSize();
Dimension viewSize = view.getPreferredSize();
anchor.x += 5;//设置移动的速度
window.setViewPosition(anchor);
if (anchor.x viewSize.width)
anchor.x = -extSize.width;
}
}
补充回答:你向TextArea内追加内容可以使用append方法,滚动条自动下滚;如果你使用的是 setText方法,那么需要手工把光标定位到内容的最后,同样可以是滚动条下滚。代码如下:
import java.awt.Frame;
import java.awt.TextArea;
public class TestFrame {
public static void main(String[] args){
Frame jf=new Frame();
TextArea jta=new TextArea();
jf.add(jta);
jf.setSize(400, 300);
jf.setVisible(true);
jta.setText("test\n");
for(int i=0;i100;i++){
jta.setText(jta.getText()+"hello"+i+"\n");
jta.setCaretPosition(jta.getText().length());
}
// jta.append("hello"+i+"\n"); //这样方式只需要一行代码
}
}
1)如果是JTextArea,需要把JTextArea包含到JScrollPane滚动面板中
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class TestFrame {
public static void main(String[] args){
JFrame jf=new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea jta=new JTextArea();
JScrollPane jp=new JScrollPane(jta);
jf.getContentPane().add(jp);
jf.setSize(400, 300);
jf.setVisible(true);
}
}
2)如果是TextArea,使用缺省方式就可以
import java.awt.Frame;
import java.awt.TextArea;
public class TestFrame {
public static void main(String[] args){
Frame jf=new Frame();
TextArea jta=new TextArea();
jf.add(jta);
jf.setSize(400, 300);
jf.setVisible(true);
}
}
加入
public void init()
{
new Thread(this).start();
}
这个是Applet生命周期中的初始化调用,这里启用线程即可。
删除public static void main(String[] args) {
new Thread(new RollWords()).start();
},这个没用,Applet不用main执行,而是用appletViewer或者浏览器执行。