效果图
目前创新互联已为成百上千家的企业提供了网站建设、域名、虚拟主机、网站改版维护、企业网站设计、景泰网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
参考代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MoveTextFrame extends JFrame {
JLabel jl;//文字标签
int speed=2;//移动速度
public MoveTextFrame() {
jl = new JLabel("文字动画");
jl.setForeground(Color.RED);
add(jl);
setSize(380, 100);//窗口大小
setLocationRelativeTo(null);//窗口居中
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
//设置定时器, 每隔25毫秒,改变一次文字标签的位置
Timer t = new Timer(25, new ActionListener() {
public void actionPerformed(ActionEvent e) {
int x = jl.getX()+speed;//计算移动后的位置
if(x=390){//如果超过就指定像素,就重新从左边开水移动
x=-30;
}
jl.setLocation(x, jl.getY());//更新位置
//repaint();
}
});
t.start();
}
public static void main(String[] args) {
new MoveTextFrame();
}
}
思路分析:
使用线程可以做动态效果, 逐步发生改变, 就是动态的了
效果如图
参考代码 ,可以在此基础上进行改造
import java.awt.event.*;
import javax.swing.*;
public class FrameDemo extends JFrame implements ActionListener {
JButton jb;
public FrameDemo() {
jb = new JButton(" 静夜思 ");
jb.addActionListener(this);
JPanel jp = new JPanel();
jp.add(jb);
add(jp);
// 窗口属性的设置
setTitle("Frame窗口");// 标题
setSize(256, 100);// 窗口大小
setLocationRelativeTo(null);// 窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new FrameDemo().setVisible(true);// 创建窗口实例, 并让窗口可见
}
@Override
public void actionPerformed(ActionEvent e) {
// 计算弹出框的位置
int x = jb.getLocationOnScreen().x + jb.getWidth() / 2 - 100;
int y = jb.getLocationOnScreen().y + jb.getHeight();
MyDialog md = new MyDialog(x, y);
Thread t = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 40; i 200; i += 2) {
md.setSize(200, i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
t.start();//启动线程
}
}
class MyDialog extends JDialog {
public MyDialog(int x, int y) {
setTitle("静夜思");
JLabel jl = new JLabel("htmlbody床前明月光,疑是地上霜.br /举头望明月,低头思故乡.br //div/body/html");
add(jl);
setSize(200, 40);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocation(x, y);
setVisible(true);
setAlwaysOnTop(true);
}
}
一: 用多线程播放一组图片, 实现动画片的效果; 类似于逐帧动画,每个图片是动画的一帧
二: 在awt/swing界面里, 可以使用paint方法,去绘制图形,然后用swing提供的Timer或者多线程技术,去刷新绘制的图形
三:在JavaFX里, 本身就支持动画,并且封装了很多动画效果可以直接使用,比如逐帧动画.缩放动画,渐变动画,旋转动画,位置动画等.
强烈推荐使用javaFX来实现动画, 因为javaFX是现代化的图形界面工具,具有简单,强大,组件丰富,跨平台,支持Html5, 支持表格, 支持动画等多种优势
下面是一个javaFX绘制的动态表格
javaFX动态表格