无法获取新推杆的 HashMap 元素?

Cant get Element of an HashMap that are new puttet?

大家好我不知道发生了什么事?我添加了生日,但是如果使用 getHashMap 调用它们,例如我无法获取 class swingmenu 中的元素。 我只是对问题有想法。我认为这是因为我在 class 中调用了新事件,而在不同的 class 中输出散列图的地方我也调用了新事件。但是不知道我说的对不对?

也许任何解决方案都会对我有所帮助。如果您有问题,请问我。对我来说,学习新东西很重要。显示了一些短代码,因为它不相关。我调试 class swingFormatFunction 并发现实例事件为空。

这部分没有添加到我的 HashMap 中。

public class swingFormatFunction{
private Event event = new Event();
public void geburtstageFormatieren(String content) {
    String formatContent = content.replace(';', ' ');
    for (String s : formatContent.split("\n")) {
        event.addBirthday(s.substring(0, 5).toString(), new Event(s.substring(12).toString()));
    }

}
}

这是我的菜单,我在其中调用 Menuitem 并单击 "ok"。这个函数工作正常我得到了输出的元素。

public class swingMenu{
okBTN.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == okBTN) {
            dialog.dispose();
            JDialog dialog = new JDialog();
            dialog.setModal(true);
            dialog.setTitle("Calendar Special Events");
            int yearNumber = Integer.parseInt((String) yearCombobox.getSelectedItem());
            JTextArea textArea = new JTextArea();


            Event event = new Event(yearNumber);
            StringBuilder stringBuilder = new StringBuilder();

            for (Map.Entry entry : event.getEventMap().entrySet()) {
                stringBuilder.append(entry.getKey() + " : " + entry.getValue() + "\n");
            }

            textArea.setText(stringBuilder.toString());
            dialog.setContentPane(textArea);


            dialog.pack();
            dialog.setLocationRelativeTo(null);
            dialog.setResizable(true);
            textArea.setEditable(false);
            dialog.setVisible(true);


        }
    }
});

那是我的活动 class。这个 class 包含我使用它的 HashMap。

    public class Event{
    private HashMap<String, Event> eventMap = new HashMap<>();
    public Event(String name) {
        this.name = name;
    }

    public Event(int year) {
        addStrongMoveableHolidayInMap(year);
    }

    public Event() {

    }

    private void addMoveableHoliday(int year) {
        /*      Bewegliche Feiertage    */

        /*Rose monday (-48)*/
        int daynumberOfEasterSunday = calenderFunction.easterSunday(year) - 48;
        String gregorDate = calenderFunction.kalenderDatumFuerJD(daynumberOfEasterSunday);

        String day = gregorDate.substring(0, 2);
        String month = gregorDate.substring(3, 5);
        String date = day + "." + month;
        this.eventMap.put(date, new Event("Rosenmontag"));
    }

    private void addStrongHoliday(int year) {
        /*      Feste Feiertage         */
        this.eventMap.put("24.12", new Event("1. Weihnachtstag"));
    }

    void addStrongMoveableHolidayInMap(int year) {
        addStrongHoliday(year);
        addMoveableHoliday(year);
    }

    public void addBirthday(String year, Event event) {
        this.eventMap.put(year, event);
    }

    public HashMap<String, Event> getEventMap() {
        return eventMap;
    }
}

希望大家帮帮我

最好的问候 曼纽尔森

两个事件对象是完全独立的。 swingFormatFunction中的第一个是实例属性,ActionListener中的第二个是局部变量。
Event 的 eventMap 属性也是实例属性,因此每个 Event 对象都有自己的映射。也许您想在所有活动中分享一个 eventMap