【问题标题】:Implementing a "manager" class responsible for creating and storing objects实现一个负责创建和存储对象的“管理器”类
【发布时间】:2014-04-02 02:31:20
【问题描述】:

这个项目的目标是利用我已经编写的现有代码并实现一个“管理器”类,该类将负责在数组中创建和存储 Dog 对象。我的问题是我不明白为什么需要这样做,这阻碍了我理解我需要做什么/更改我的代码。任何帮助将不胜感激。谢谢!

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Dog {
    private String name;
    private String breed;
    private String age;


    // Constructs fields
    public Dog(String name, String breed, String age) {
        this.name = name;
        this.breed = breed;
        this.age = age;

    }

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

    public String setbreed(String breed) {
        this.breed = breed;
        return breed;
    }

    public String setage(String age) {
        this.age = age;
        return age;
    }

    public String toString() {
        return ("Name: " + this.name + " breed: " + this.breed + " age: " + this.age);
    }
}


public class LabFour extends JFrame implements ActionListener {
    public LabFour() {
        setLayout(new GridLayout(5, 1, 1, 1));

        // Creates TextField, TextArea, and button components
        name = new JTextField();
        breed = new JTextField();
        age = new JTextField();
        JButton jbtSubmit = new JButton("Submit");
        echoDog = new JTextArea();

        // Add TextField, TextArea, and button components to the frame
        add(new JLabel("Name: "));
        add(name);
        add(new JLabel("breed: "));
        add(breed);
        add(new JLabel("age: "));
        add(age);
        add(new JLabel("Submit Button: "));
        add(jbtSubmit);
        jbtSubmit.addActionListener(this);
        add(new JLabel("Submitted Text: "));
        add(echoDog);
        echoDog.setEditable(false);

    }

    // TextFields
    private JTextField name;
    private JTextField breed;
    private JTextField age;

    // Echo TextArea
    private JTextArea echoDog;

    // Listener
    public void actionPerformed(ActionEvent a) {

        Dog[] Dogs = new Dog[50];
        int arrayLocation = 0;

        Dog Dog1 = new Dog(name.getText(), breed.getText(),
                age.getText());
        // Checks remaining array space
        if (arrayLocation < 50) {
            Dogs[arrayLocation] = Dog1;
            ++arrayLocation;
        }
        // Echos back entered text while storing the previous text
        echoDog.setText(echoDog.getText() + "\n" + Dog1.toString());
    }

    // Main
    public static void main(String[] args) {
        LabFour frame = new LabFour();
        frame.setTitle("Dog Interface");
        frame.setSize(1200, 900);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.setVisible(true);

    }

}

【问题讨论】:

  • “为什么需要这样做”——这里的“这个”是什么意思?
  • 首先,重写public String setName(String Name) { this.name = name; return name; } - 分为getter和setter。
  • 我的意思是,在添加了管理器类之后,程序本质上应该做和现在一样的事情,只是以不同的方式。我不明白的是我需要在经理类中放置什么。
  • 好吧,我想到了一些有趣的事情。对我来说,添加一个管理器类使这个程序更像一个 MVC 结构。 M 是存储信息的狗类。 V 是你的 labfour 在 GUI 上显示的东西,C 应该是你的经理调用,它控制每个之间的流程。

标签: java swing class user-interface awt


【解决方案1】:

正如您所写的“Manager 将负责在数组中创建和存储 Dog 对象”,因此您需要创建更好的 Dog 对象列表(以便您可以添加和删除 Dogs),为此列表添加 CRUD 方法。如果您需要列表中的数组,您可以稍后轻松转换它。

所以放这样的东西

public class Manager {

   private List<Dog> = new ArrayList<>();

   ...

   CRUD operations here

}

然后您需要添加 UI 控件以实际输入有关狗的信息,并显示狗的表格。 所以它将是窗格、文本输入、按钮等。

【讨论】:

    【解决方案2】:

    好吧,我想到了一些有趣的事情。 对我来说,添加一个管理器类使这个程序更像一个 MVC 结构。 M 是存储信息的狗类。 V 是你的 labfour 在 GUI 上显示的东西,C 应该是你的经理调用,它控制每个之间的流动。

    http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

    【讨论】:

      猜你喜欢
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2021-05-22
      • 2020-06-25
      相关资源
      最近更新 更多