線程中,不要直接訪問界面的組件。。。。。。。通過自定義事件
10年的白塔網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整白塔建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“白塔網(wǎng)站設計”,“白塔網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
//歡迎界面
import java.awt.Toolkit;
import javax.swing.*;
public class PicWelcome extends JDialog {
private JPanel p;
private JLabel l;
private int w=500;//界面寬度
private int h=290;//界面高度
private final int ScreenW=Toolkit.getDefaultToolkit().getScreenSize().width;//屏幕寬
private final int ScreenH=Toolkit.getDefaultToolkit().getScreenSize().height;//屏幕高
public PicWelcome(){
p=new JPanel();
l=new JLabel("這里本來是new ImageIcon(圖片路徑)");
p.add(l);
this.add(p);
this.setResizable(false);
this.setBounds((ScreenW-w)/2, (ScreenH-h)/2, w, h);
this.setVisible(true);
}
}
//登陸界面
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.Timer;
public class LoginFace extends JFrame{
private int w=250;//界面寬度
private int h=150;//界面高度
private final int ScreenW=Toolkit.getDefaultToolkit().getScreenSize().width;//屏幕寬
private final int ScreenH=Toolkit.getDefaultToolkit().getScreenSize().height;//屏幕高
private Timer time;
public LoginFace(String title){
super(title);
final JDialog pw = new PicWelcome();
time=new Timer(1200,new ActionListener(){
public void actionPerformed(ActionEvent e) {
pw.setVisible(false);
time.stop();
LoginFace.this.setVisible(true);
}
});
time.start();
this.setBounds((ScreenW-w)/2, (ScreenH-h)/2, w, h);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//main方法程序入口
public static void main(String[] args){
new LoginFace("登陸界面");
}
}
還是學生時代的時候?qū)懙拇a,隨便改了改給你參考一下吧。
本來歡迎界面JLabel中是一張圖片的,為了方便你查看,就改成文字了。
timer 時間自己改 這里是 1200 其實就是1.2秒
—_— ||
給圖片加個變量,boolean life = true;
繪制的時候,判斷是這個變量是否為真。如果為真,才繪制。
當你的鼠標點擊了圖片,把life改為false不就行了、、、、
import?java.awt.Color;
import?java.awt.Graphics;
import?java.awt.event.WindowAdapter;
import?java.awt.event.WindowEvent;
import?java.util.Random;
import?javax.swing.JFrame;
import?javax.swing.JPanel;
public?class?RunningBallDemo?extends?JFrame?{
public?static?void?main(String?args[])?{
new?RunningBallDemo();
}
public?RunningBallDemo()?{
Ball?ballPanel?=?new?Ball(5,?5);
getContentPane().add(ballPanel);
setBackground(Color.BLACK);
addWindowListener(new?WindowAdapter()?{
public?void?windowClosing(WindowEvent?e)?{
System.exit(0);
}
});
setSize(350,?350);
setVisible(true);
Thread?thread1?=?new?Thread(ballPanel);
thread1.start();
}
}
class?Ball?extends?JPanel?implements?Runnable?{
int?rgb?=?0;
Color?color;
int?x,?y;
int?dx?=?5,?dy?=?5;
Ball(int?x,?int?y)?{
this.x?=?x;
this.y?=?y;
}
@Override
protected?void?paintComponent(Graphics?g)?{
super.paintComponent(g);
setBackground(Color.BLACK);
g.setColor(color);
g.fillOval(x,?y,?50,?50);
}
public?void?run()?{
while?(true)?{
if?(x?=?0)?{
dx?=?5;
updateBallColor();
}?else?if?((x?+?50)?=?getWidth())?{
dx?=?-5;
updateBallColor();
}
if?(y?=?0)?{
dy?=?5;
updateBallColor();
}?else?if?((y?+?50)?=?getHeight())?{
dy?=?-5;
updateBallColor();
}
x?=?x?+?dx;
y?=?y?+?dy;
repaint();
try?{
Thread.sleep(25);
}?catch?(InterruptedException?e)?{
;
}
}
}
public?void?updateBallColor()?{
rgb?=?new?Random().nextInt();
color?=?new?Color(rgb);
}
}