Очистка вкладки на Listselectionevent не работает должным образом - PullRequest
0 голосов
/ 05 ноября 2019

// Редактировать: плитку следует называть вкладкой Обновление на Listselectionevent, которая не работает должным образом

У меня есть проблема, которую я не могу решить, поэтому могу воспользоваться некоторой помощью. У меня есть программа, которая импортирует csv.file с JFileChooser, а затем импортирует csv.file в JList. При щелчке элемента в списке вкладка статистики обновляется с другими текстовыми значениями. Когда я импортирую новый файл, я могу щелкнуть его внутри списка, и вкладка обновляется правильно. Но когда у меня есть несколько элементов в списке, статистика предыдущих элементов отображается, даже когда я выбираю новый. Вот как выглядит моя программа:

https://i.gyazo.com/b7121a5ed46862482e18d5f0156cb010.png

Внутри моего кода у меня есть методы, расширяющие JPanel, который вытягивает текстовые поля, и тот, который обновляет текстовые поля данными, называемыми updateStatistics (),Внутри ListSelectionEvent вызывается updateStatistics (), поэтому он должен обновлять текстовое поле данными каждый раз, когда я нажимаю элемент в списке, но, как я уже упоминал ранее, он работает только при импорте файла. Как мне решить эту проблему, чтобы поле tetx обновлялось при каждом нажатии элемента в списке, а не только на новых импортированных элементах?

Мой метод, который рисует панель:

private JPanel createViewStatisticsPanel() {
        JPanel statPanel = new JPanel(new GridLayout(2, 3));
        statPanel.setPreferredSize(new Dimension(1000, 500));

        // statPanel.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));

        JPanel timePanel = new JPanel();
        timePanel.setBorder(BorderFactory.createTitledBorder("Tid/Distans"));
        timePanel.setBackground(new Color(224, 255, 255));
        tdp.setBackground(new Color(224, 255, 255));
        timePanel.add(tdp);
        statPanel.add(timePanel);

        JPanel startTimepanel = new JPanel();
        startTimepanel.setBorder(BorderFactory.createTitledBorder("Altitud"));
        startTimepanel.setBackground(new Color(224, 255, 255));
        stp.setBackground(new Color(224, 255, 255));
        startTimepanel.add(stp);
        statPanel.add(startTimepanel);

        JPanel startTimepanel1 = new JPanel();
        startTimepanel1.setBorder(BorderFactory.createTitledBorder("Hastighet"));
        startTimepanel1.setBackground(new Color(224, 255, 255));
        stp1.setBackground(new Color(224, 255, 255));
        startTimepanel1.add(stp1);
        statPanel.add(startTimepanel1);

        JPanel startTimepanel2 = new JPanel();
        startTimepanel2.setBorder(BorderFactory.createTitledBorder("Puls"));
        startTimepanel2.setBackground(new Color(224, 255, 255));
        stp2.setBackground(new Color(224, 255, 255));
        startTimepanel2.add(stp2);
        statPanel.add(startTimepanel2);

        JPanel startTimepanel3 = new JPanel();
        startTimepanel3.setBorder(BorderFactory.createTitledBorder("Kadens"));
        startTimepanel3.setBackground(new Color(224, 255, 255));
        stp3.setBackground(new Color(224, 255, 255));
        startTimepanel3.add(stp3);
        statPanel.add(startTimepanel3);

        JPanel startTimepanel4 = new JPanel();
        startTimepanel4.setBorder(BorderFactory.createTitledBorder("Lutning"));
        startTimepanel4.setBackground(new Color(224, 255, 255));
        stp4.setBackground(new Color(224, 255, 255));
        startTimepanel4.add(stp4);
        statPanel.add(startTimepanel4);

        return statPanel;
    }

Мой метод, который обновляет его (добавляет текст в текстовые поля):

public void updateStatistics(Statistics stats)

{
    stats.calculateStatistics();
    tdp.setText("\n Starttid: " + stats.getStartTime() + "\n Slutlig tid: " + stats.getEndTime() + "\n Total tid: "
            + stats.getTotalTime() + "\n Total distans" + stats.getTotalDistance());
    stp.setText("\n Lägsta altitud: " + stats.getMinAltitude() + "\n Högsta altitud : " + stats.getMaxAltitude()
            + "\n Genomsnittlig altitud: " + stats.getAvgAltitude());
    stp1.setText("\n Lägsta hastighet: " + stats.getMinSpeed() + "\n Högsta hastighet : " + stats.getMaxSpeed()
            + "\n Genomsnittlig hastighet: " + stats.getAvgSpeed());
    stp2.setText("\n Lägsta puls: " + stats.getMinHeartrate() + "\n Högsta puls : " + stats.getMaxHeartrate()
            + "\n Genomsnittlig puls: " + stats.getAvgHeartrate());
    stp3.setText("\n Lägsta kadens: " + stats.getMinCandence() + "\n Högsta kadens : " + stats.getMaxCandence()
            + "\n Genomsnittlig kadens: " + stats.getAvgCandence());
    stp4.setText("\n Lägsta lutning: " + stats.getMinTilt() + "\n Högsta lutning : " + stats.getMaxTilt()
            + "\n Genomsnittlig lutning: " + stats.getAvgTilt());
}

My ListSelectionEvent: (слушатель применен к списку)

private void selectActivity(ListSelectionEvent e) // Lyssnarmetod

    {


        Activity selectedActivity = listAct.getSelectedValue();
        if (selectedActivity != null)

        {

            stats = new Statistics(activity.getData());
            updateStatistics(stats);
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...