當前位置:編程學習大全網 - 編程語言 - javaSE,我想用awt或者swing編寫壹個動畫效果的彈出窗體。

javaSE,我想用awt或者swing編寫壹個動畫效果的彈出窗體。

思路分析:

使用線程可以做動態效果, 逐步發生改變, 就是動態的了

效果如圖

參考代碼 ,可以在此基礎上進行改造

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("<html><body>床前明月光,疑是地上霜.<br?/>舉頭望明月,低頭思故鄉.<br?/></div></body></html>");

add(jl);

setSize(200,?40);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

setLocation(x,?y);

setVisible(true);

setAlwaysOnTop(true);

}

}

  • 上一篇:新能源電動汽車充電器
  • 下一篇:這家叫ABC360的在線英語培訓平臺究竟有什麽魔力?
  • copyright 2024編程學習大全網