展开全部
思路分析:
使用线程可以做动态效果, 逐步发生改变, 就是动态的了
效果如图62616964757a686964616fe78988e69d8331333363386166
参考代码 ,可以在此基础上进行改造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
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("
床前明月光,疑是地上霜.举头望明月,低头思故乡.