Migliorare il programma visto in classe inserendo le etichette dei numeri sugli assi cartesiani: -2 -1 0 1 2 3 4 etc. distanziate di 40 pixel; fare in modo che alla pressione del mouse vengano visualizzate le coordinate con il corretto fattore di scala coerente con le etichette inserite. Listato:
package it.liceocuneo.math; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.Serializable; import javax.swing.JPanel; public class JOxy extends JPanel implements Serializable, MouseListener { private String titleX = "X", titleY = "Y"; private boolean visibile = false; private int posX = 0, posY = 0; public JOxy() { this.setPreferredSize(new Dimension(200, 200)); this.setBackground(Color.WHITE); this.addMouseListener(this); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); int w = this.getWidth(), h = this.getHeight(); int w2 = w / 2, h2 = h / 2; g.setColor(Color.BLACK); g.drawLine(0, h2, w - 1, h2); g.drawLine(w2, 0, w2, h - 1); g.drawString(titleX, w - 10, h2 - 5); g.drawString(titleY, w2 + 5, 15); if (visibile) { int xReale = posX - w2; int yReale = h2 - posY; g.drawString("(" + xReale + "," + yReale + ")", posX + 10, posY + 5); } } public String getTitleX() { return titleX; } public void setTitleX(String titleX) { this.titleX = titleX; } public String getTitleY() { return titleY; } public void setTitleY(String titleY) { this.titleY = titleY; } @Override public void mouseClicked(MouseEvent arg0) { } @Override public void mouseEntered(MouseEvent arg0) { } @Override public void mouseExited(MouseEvent arg0) { } @Override public void mousePressed(MouseEvent arg0) { posX = arg0.getX(); posY = arg0.getY(); visibile = true; repaint(); } @Override public void mouseReleased(MouseEvent arg0) { visibile = false; repaint(); } }