2016-03-15 51 views
-1

我有一個名爲FiHaStart的框架。 必須關閉自己並傳遞另一個名爲NewPlayer的框架。 框架NewPlayer已打開,但框架FiHaStart仍然存在(未關閉)。 我能做什麼?你能解決它嗎?我不能設置這個框架的visibitiy。你能解決它嗎?

import javax.swing.*; 
import java.awt.*; 
import java.util.Timer; 
import java.util.TimerTask; 

public class FiHaStart extends JFrame { 
JFrame start; 
JLabel gif; 
JPanel p1; 

Timer timer; 

public FiHaStart(int seconds){  // We have a gif on the frame it takes 7 seconds 
    timer = new Timer();   //The frame will be closed after 7 seconds 
    timer.schedule(new RemindTask(), seconds*1000); 

} 

//問題可能在這裏。

class RemindTask extends TimerTask{ 
    public void run(){ 
     setVisible(false); 

     timer.cancel(); 
     new NewPlayer(); 

    } 
} 


public FiHaStart() { 

// JLabel backGround = new JLabel(new ImageIcon("images\\new.png")); 
    setTitle("FiHa"); 
    setSize(750, 550); 
    setLocationRelativeTo(null); // Center the frame 
// getContentPane().add(backGround); 
setLayout(null); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 
setResizable(false); 

setContentPane(new JLabel(new ImageIcon("images\\new.png"))); 
setIconImage(Toolkit.getDefaultToolkit().getImage("images\\iconfh.png")); 


    gif = new JLabel(""); 
    ImageIcon ikon=new ImageIcon("images\\giff.gif"); 
    gif.setIcon(ikon); 
    gif.setBounds(210, 350 , 319,36); 
    this.add(gif); 

    revalidate(); 
    repaint(); 



    new FiHaStart(7); 




    } 


} 
+0

我不能設置此框架的可見性爲false。 :/ – hekinci

+0

後最小的例子。所有gif代碼都是不相關的 –

回答

2

爲什麼在默認構造函數的末尾調用new FiHaStart(7)?基本上你同時創建兩個FiHaStart實例。

爲什麼不啓動​​,而不是在默認的構造函數調用new FiHaStart(7)。例如:

public FiHaStart() { 
     // other code 
     timer = new Timer();    
     timer.schedule(new RemindTask(), 7*1000); 
    } 

您應該看看如何組織您的java類構造函數。通常作爲默認的構造函數,編譯器會自動插入超類的默認構造函數,或者你明確地從同一類或使用superthis,不new超類中調用構造函數。

而且,你所做的構造FiHaStart(double seconds)公共而不初始化實例中的變量。

在你的代碼的另一個問題是它的使用java.util.Timer。對於將與擺動組件進行交互的計劃任務,應該使用javax.swing.TimerHere是一個關於它的堆棧溢出帖子。

0

你必須模擬框架上的X按鈕的點擊。試試這個: yourframe.dispatchEvent(new WindowEvent(yourframe,WindowEvent.WINDOW_CLOSING));

相關問題