簡體   English   中英

事件后從動態TextField填充2D數組(Java)

[英]Populating 2D array from dynamic TextField After Event (Java)

我有一個帶有3個TextField的Java UI,當單擊一個按鈕時,將采用輸入並將其分配給數組中的相應列。 我該如何迭代,以便可以用多於一組的輸入填充數組:

https://i.stack.imgur.com/Zw1U6.png

單擊按鈕時,我有一個工作動作偵聽器:

nextActivity.addMouseListener(new java.awt.event.MouseAdapter() {
   public void mouseClicked(java.awt.event.MouseEvent evt) {
      MouseClicked(evt);}
   private void MouseClicked(MouseEvent evt) {

      String activityName = activityNameField.getText();
      String activityDuration_String = activityDurationField.getText();
      String dependantActivities = activityPredeField.getText();

但是,如何返回填充的對象數組'rowData [] []'?

根據您共享的UI和您的要求,我建議您使用“ 下一個活動”按鈕的“執行操作”方法,該方法非常容易實現。

為了存儲數據,如注釋中提到的@DevilsHnd,您至少需要知道在Java中初始化2D數組的行數。

(我認為您最初不需要知道列的大小,可以在需要時初始化列的大小)

現在,可能在這里存儲數據的最佳方法是使用List接口ArrayList類。

在下面的解決方案中,我使用ArrayList來存儲多組輸入。

當您在代碼中使用數組時,我想出了一個解決方案,我們可以使用數組存儲單個輸入(3個文本字段數據)。

class data {
    String information[];

    data(String input[]) {
        information = input;
    }

    @Override
    public String toString() {
        return "Activity Name: " + information[0] + ", Duration: " 
                + information[1] + ", Predecessors: " +information[2];
    }
}

ArrayList<data> Input = new ArrayList<>();

private void nextActivityActionPerformed(java.awt.event.ActionEvent evt) {                                             

    // Take data from the text fields..
    String activityName = activityNameField.getText();
    String activityDuration_String = activityDurationField.getText();
    String dependantActivities = activityPredeField.getText();

    // Store this data in an array of size 3..
    String input[] = new String[3];
    input[0] = activityName;
    input[1] = activityDuration_String;
    input[2] = dependantActivities;

    // Store it in our global list..
    Input.add(new data(input));

    // set text fields empty so that new input can be taken..
    activityNameField.setText("");
    activityDurationField.setText("");
    activityPredeField.setText("");
}                                            

private void doneActionPerformed(java.awt.event.ActionEvent evt) {                                     

    // Take data from the text fields..
    String activityName = activityNameField.getText();
    String activityDuration_String = activityDurationField.getText();
    String dependantActivities = activityPredeField.getText();

    // A condition to check if the last entry was left taken as an input..
    boolean condition = (activityName.equals("")) && (activityDuration_String.equals("")) 
                        && (dependantActivities.equals(""));

    // if all 3 inputs are not empty then..
    // You can change as per your requirements....
    if(!condition) {                                
        // Store this data in an array of size 3..
        String input[] = new String[3];
        input[0] = activityName;
        input[1] = activityDuration_String;
        input[2] = dependantActivities;

        // Store it in our global list..
        Input.add(new data(input));

        // set text fields empty so that new input can be taken..
        activityNameField.setText("");
        activityDurationField.setText("");
        activityPredeField.setText("");
    }

    for(data inp : Input) 
        System.out.println(inp);        // Just print the stored data...
}          

注意:

1)數據類存儲單個輸入集。

2)輸入列表將存儲在按下“完成”按鈕之前獲取的所有輸入集。

3)最后,所有輸入的數據均以“完成”按鈕的“操作已執行”方法進行打印。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM