2015-07-22 65 views
0

我是新來的java,我需要一些幫助!如何將不同按鈕的數組鏈接在一起?

在我的代碼很長一段時間後,我終於找到了我的代碼問題。問題是我有3個獨立的按鈕是私人無效的,如果這與任何事情有關,並且每個按鈕都假設從我的數組中添加/減去字符串。我有一個名爲strArray的數組和3個按鈕,當點擊,初始化,添加和刪除時,這些按鈕會被修改。第一個按鈕是初始化,當點擊輸出時

private void togbtnInitializeActionPerformed(java.awt.event.ActionEvent evt) {             
    togbtnAdd.setEnabled(true); 
    togbtnRemove.setEnabled(true); 
    togbtnDisplay.setEnabled(true); 

    String[] strArray = {"Calvin Harris - Overdrive(Part 2)", "DVBBS & Borgeous - TSUNAMI", "Martin Garrix - Tremor", "Martin Garrix - Animals", "Firebeatz - Max Ammo"}; 
    int intArrayLength = strArray.length; 
    for (int i = 0; i < intArrayLength; i++){ 
     this.txtAreaOutput.setText(txtAreaOutput.getText() + "\n" + strArray[i]); 
    } 
    togbtnInitialize.setEnabled(false);   
}           

成文本區域在我的gui中。所以現在我輸出了這個,Initialize按鈕被禁用,並且Add和Remove被啓用。這是我發現問題的地方。在我輸入一個字符串並單擊添加按鈕後,它不會將字符串添加到在初始化按鈕代碼中鍵入的strArray中。我通過使用「add」按鈕打印strArray來檢查它,它只保存了我剛剛添加的那個。

private void togbtnAddActionPerformed(java.awt.event.ActionEvent evt) {           
    strArray.add(this.txtInputName.getText()); 
    System.out.println(strArray); 
    this.txtAreaOutput.setText(txtAreaOutput.getText() + "\n" + strArray.get(strArray.size()));   
}           

我怎麼能連接所有strArrays在一起,這樣,如果我做了什麼把它與一個按鈕,它也改變了strArray中的其他按鈕?提前致謝!

編輯:我仍然無法訪問strArray,除非在我的按鈕中爲它創建一個變量。

公共類U3A4_CDCollection擴展javax.swing.JFrame中{

public U3A4_CDCollection() { 
    initComponents(); 
    ArrayList<String> strArray = new ArrayList<String>(); 
    strArray.add("Calvin Harris - Overdrive(Part 2)"); 
    strArray.add("DVBBS & Borgeous - TSUNAMI"); 
    strArray.add("Martin Garrix - Tremor"); 
    strArray.add("Martin Garrix - Animals"); 
    strArray.add("Firebeatz - Max Ammo"); 
} 
+1

使'strArray'成爲一個實例字段,以便每個按鈕都可以訪問它。將它封裝在某種模型中會更好,但這將是一個開始... – MadProgrammer

+0

對不起,你能解釋我怎麼做到這一點,或給我一個鏈接,我可以在哪裏學習? – whatyouwant229

+0

[瞭解班級成員](https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) – MadProgrammer

回答

0

有這麼多的情況下丟失的,更不用說使用陣列和別的東西具有add方法的混亂...

本質上,如果您希望您的類的方法能夠與相同的變量進行交互,那麼應該將該變量聲明爲類實例字段。有關更多詳細信息,請參閱Understanding Class Members

public class U3A4_CDCollection extends javax.swing.JFrame { 

    private ArrayList<String> strArray; 

    public U3A4_CDCollection() { 
     initComponents(); 
     strArray = new ArrayList<String>(); 
     strArray.add("Calvin Harris - Overdrive(Part 2)"); 
     strArray.add("DVBBS & Borgeous - TSUNAMI"); 
     strArray.add("Martin Garrix - Tremor"); 
     strArray.add("Martin Garrix - Animals"); 
     strArray.add("Firebeatz - Max Ammo"); 

}