Potrzebuję pobrać wartości z lini, które tworzę na tym wykresie ->
Stworzyłem mouseMotionListener ->
public void mouseHover() {
addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
int x = e.getX();
int y = e.getY();
if(x >= 300 && x <= 1700 && y >= 0 && y <= 800) {
System.out.println(x + " x Enter y " + y);
}
}
Funkcja powyżej jest wywoływana w konstruktorze. Program powinien działać tak, że gdy mysz będzie w polu tam gdzie zaczyna się wykres powinna być wyświetlana wartość obu wykresów.
Niżej podaje metode paintComponent gdzie wyrysowuje wykres:
public void paintComponent(Graphics g) {
super.paintComponent(g);
g2d = (Graphics2D) g;
g2d.drawRect(300, 0, 1700, 800);
scaleUnit = 2;
Integer maxDeath;
ArrayList<Integer> maxDeathList = new ArrayList<Integer>();
maxDeathList.addAll(sickList);
maxDeathList.addAll(deadList);
if (deadList.size() > 0 || sickList.size() > 0) {
maxDeath = Collections.max(maxDeathList);
if (maxDeath > 50) {
scaleUnit = maxDeath / 20;
}
}
if (deadList.size() > 0) {
totalDeath.setText(Integer.toString(sumAllElements(deadList)));
avgDeath.setText(Integer.toString(avgValue(deadList)));
}
if (sickList.size() > 0) {
totalSick.setText(Integer.toString(sumAllElements(sickList)));
avgSick.setText(Integer.toString(avgValue(sickList)));
}
int startX = 300;
int startY = 100;
int endX = 10;
int endY = 800;
int unitX = (endX - startX) / 10;
int unitY = (endY - startY) / 100;
int prevX = startX;
int prevY = endY;
int startXSick = 300;
int startYSick = 100;
int endXSick = 10;
int endYSick = 800;
int unitXSick = (endXSick - startXSick) / 10;
int unitYSick = (endYSick - startYSick) / 100;
int prevXSick = startX;
int prevYSick = endY;
g2d.setColor(Color.RED);
g2d.setStroke(new BasicStroke(2));
for (int y : deadList) {
g2d.drawLine(prevX, prevY, prevX -= unitX, prevY = endY - (y * unitY) / scaleUnit);
}
g2d.setColor(Color.BLUE);
for (int x : sickList) {
g2d.drawLine(prevXSick, prevYSick, prevXSick -= unitXSick,
prevYSick = endYSick - (x * unitYSick) / scaleUnit);
}
g2d.setStroke(new BasicStroke(1));
repaint();
}