Umieszczanie na osi X wartości z listy, a nie indeksów

0

Witam
mam problem z osią OX. Oś OY rysuje poprawnie na osi umieszcza wartości, natomiast na OX umieszcza indeksy zamiast wartości z listy, starałem sie poprawić kod tak, aby działał podobnie do kodu dla osi Oy, niestety mi sie to nie udało. Bardzo prosze o poprawienie petli for, aby wyswietlala wartosci, a nie indeksy
/*

 for (int i = 0; i < numberYDivisions + 1; i++) {
            int x0 = padding + labelPadding;
            int x1 = pointWidth + padding + labelPadding;
            int y0 = getHeight() - ((i * (getHeight() - padding * 2 - labelPadding)) / numberYDivisions + padding + labelPadding);
            int y1 = y0;
            if (scoresX.size() > 0) {
                g2.setColor(gridColor);
                g2.drawLine(padding + labelPadding + 1 + pointWidth, y0, getWidth() - padding, y1);
                g2.setColor(Color.BLACK);
                String yLabel = (getMinScore() + (getMaxScore() - getMinScore()) * ((i * 1.0) / numberYDivisions)) + "";
                FontMetrics metrics = g2.getFontMetrics();
                int labelWidth = metrics.stringWidth(yLabel);
                g2.drawString(yLabel, x0 - labelWidth - 5, y0 + (metrics.getHeight() / 2) - 3);
            }
            g2.drawLine(x0, y0, x1, y1);
        }

        // and for x axis
        for (int i = 0; i < scoresY.size(); i++) {
            if (scoresY.size() > 1) {
                int x0 = i * (getWidth() - padding * 2 - labelPadding) / (scoresY.size() - 1) + padding + labelPadding;
                int x1 = x0;
                int y0 = getHeight() - padding - labelPadding;
                int y1 = y0 - pointWidth;
                if ((i % ((int) ((scoresY.size() / 10.0)) + 1)) == 0) {
                    g2.setColor(gridColor);
                    g2.drawLine(x0, getHeight() - padding - labelPadding - 1 - pointWidth, x1, padding);
                    g2.setColor(Color.BLACK);
                    String xLabel = i + "";
                    FontMetrics metrics = g2.getFontMetrics();
                    int labelWidth = metrics.stringWidth(xLabel);
                    g2.drawString(xLabel, x0 - labelWidth / 2, y0 + metrics.getHeight() + 3);
                }
                g2.drawLine(x0, y0, x1, y1);
            }
        }

*/

0

Średnio chce mi się zagłębiać w kod bo nie jest zbyt czysto napisany, ale z tego co widzę to interesująca Ciebie linijka to String xLabel = i + "";. Nic dziwnego że masz tutaj indeksy, ponieważ i idzie od 0 do scoresY.size(). Być może xLabel powinien być równy scoresY.get(i) + "";

0

Faktycznie działa, a mam jeszcze jedno pytanie jak opisać osie OX i OY?

1 użytkowników online, w tym zalogowanych: 0, gości: 1