2014-09-27 83 views
0

我有一個非常簡單的選擇您正在使用的NetBeans IDE中的路徑Java遊戲。基本上會發生什麼是用戶將點擊三個按鈕之一,並且預設JLabel的設置爲""(無)將被重置爲我決定使用的任何文本。我通過添加下面的代碼來做到這一點。Java應用程序重新啓動或重置按鈕

private void option1ActionPerformed(java.awt.event.ActionEvent evt) { 
    jLabel6.setText("You go down the dark tunnel..."); 
} 

現在所有這些工作正常,但我想通過單擊標籤爲「重新啓動」的按鈕來重新啓動/重置我的應用程序的方式。我不介意它是否必須關閉應用程序,然後再次打開它,或者它將簡單地將所有JLabel重新設置爲「」。我只是不想爲每個JLabel輸入下面的代碼。

jLabel1.setText(""); 
jLabel2.setText(""); 
jLabel3.setText(""); 

我已經做到了人提供,似乎對我的情況下工作的代碼在這個網站的一些研究,沒有,可能是因爲它根本不工作,或者因爲我做錯了什麼。任何幫助將不勝感激,請儘量具體,因爲我是相當新的寫Java和不明白的一切。

這也將工作對我來說,如果有人可以提供一個辦法,我在一個應用程序,而不是整個事情關閉1個窗口中,當使用

System.exit(0); 

等。

+0

目前尚不清楚你的問題是真的是什麼 – 2014-09-27 13:23:09

+0

沒有足夠的代碼也不夠的問題的解釋這裏提供任何答案,是不是猜測。 – 2014-09-27 13:25:03

+0

@Thusitha Thilina Dayaratne我想重新啓動我的程序,因此在用戶所在的遊戲的任何部分,點擊重新啓動按鈕時,遊戲將返回到其初始狀態,即應用程序第一次跑。 – MattS 2014-09-27 13:27:05

回答

0

找到了答案,以我自己的問題:

感謝Holger提出「處置」。這是我發現的工作。

private void restartButtonActionPerformed(ActionEvent evt) { 
    if(evt.getSource() == restartButton) 
    { 
     dispose(); 
     MyGUI game = new MyGUI(); 
     game.setVisible(true); 
    } 
} 
2

首先,我建議特別是進口的JLabel類,所以你可以寫的javax.swing.JLabelJLabel代替:

import javax.swing.JLabel; 

而不是聲明的每個單獨的JLabel的,創造的Jlabel陣列:

JLabel[] jLabels = new JLabel[N]; // where N is the number of JLabels 

每當您需要訪問JLabel,請使用:

jLabels[6].setText("You go down the dark tunnel..."); 

如果要重置所有的JLabel,使用方法:

for (JLabel jLabel : jLabels) { 
    jLabel.setText(""); 
} 

有關陣列的詳細信息,如果您有您的程序作爲一個可執行的JAR文件讀取http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

+0

他正在使用完全限定名稱,因爲GUI構建器爲他做了。 – user1803551 2014-09-27 16:48:41

+0

@ user1803551是的,你是對的,但在問題發生之後,我決定擺脫發電機,讓我有更多的控制權。 – MattS 2014-09-27 19:17:49

0

那麼你可以使用

public void restert(){ 
    Runtime.getRuntime().exec("java -jar yourapp.jar"); 
    System.exit(0); 
} 

如果您想了解更多有關重新啓動的Java應用程序,你可以去通過this