簡體   English   中英

如何將內容分組並將其作為一個對象添加到ArrayList?

[英]How to group content and add it to ArrayList as one object?

我的GUI設計中聲明了幾個swing組件。 我已將大多數組件成功轉換為字符串格式,如下所示:

String NameOfCruise = Cruisename.getText().trim(); //JTextField
String startLValue = startL.getSelectedItem().toString(); //JComboBox
String endLValue = endL.getSelectedItem().toString();  // JComboBox
new SimpleDateFormat("dd/MM/yyyy").format(model1.getValue())); //JSpinner
String Shipname = ShipList.getSelectedValue().toString(); // JList

上面組件的目的是構造一個允許用戶向系統添加新Cruise的表格。 獲得上面所有的表單輸入后,我想將其存儲到ArrayList中。

 ArrayList Cruise = new ArrayList();

但是,我想以這種格式存儲它:

Cruise Name: ________
Start Port: _________
End Port: _______
Start Date: _________
End Date: _______
Assigned to ship: ______

這樣,如果我可以選擇列出系統中的所有巡航,它將顯示為一個對象。 例如,如果我在ArrayList中有一個Cruise,它將同時顯示分配給它的所有詳細信息。

有沒有辦法做到這一點?

您可能會混淆數據及其表示形式。 我想象您將在Cruise中將Cruise對象存儲在ArrayList<Cruise> ,並且所有保存的數據都是純數據,包括Strings,Date等,並且這應該是程序Model的一部分 如何顯示取決於您的GUI或View 如果要以您提到的格式顯示List<Cruise> ,則可以在JList中進行顯示,例如,讓單元格渲染器返回一個JPanel,其中的適當字段填充有各個Cruise的屬性。

這是一個如何使用正確的數據表示形式的示例:

public static void main(String[] args) {
    List<Cruise> cruiseList = new ArrayList<Cruise>();
    cruiseList.add(new Cruise("Cruise 1", "Florida", "Puerto Rico", new Date(), new Date(), "Captain X"));
    System.out.println(cruiseList.get(0));
}

private static class Cruise {
    private String name;
    private String startPort;
    private String endPort;
    private Date startDate;
    private Date endDate;
    private String assignedToShip;

    public Cruise(String name, String startPort, String endPort, Date startDate, Date endDate, String assignedToShip) {
        super();
        this.name = name;
        this.startPort = startPort;
        this.endPort = endPort;
        this.startDate = startDate;
        this.endDate = endDate;
        this.assignedToShip = assignedToShip;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("Cruise Name: ").append(name).append("\n");
        sb.append("Start Port: ").append(startPort).append("\n");
        sb.append("End Port: ").append(endPort).append("\n");
        sb.append("Start Date: ").append(startDate).append("\n");
        sb.append("End Date: ").append(endDate).append("\n");
        sb.append("Assigned to ship: ").append(assignedToShip).append("\n");
        return sb.toString();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStartPort() {
        return startPort;
    }

    public void setStartPort(String startPort) {
        this.startPort = startPort;
    }

    public String getEndPort() {
        return endPort;
    }

    public void setEndPort(String endPort) {
        this.endPort = endPort;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public String getAssignedToShip() {
        return assignedToShip;
    }

    public void setAssignedToShip(String assignedToShip) {
        this.assignedToShip = assignedToShip;
    }
}

暫無
暫無

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

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