2015-07-22 62 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"); 

}