Piano cartesiano Java disegno di una retta

di il
1 risposte

Piano cartesiano Java disegno di una retta

Ragazzi vi spiego il mio problema,premettendo che è la mia prima esperienza per quanto riguarda programmi con un interfaccia grafica.
io ho 2 classi:

UNA CHE MI GESTISCE IL PIANO CARTESIANO:
class CartesianPlane extends JPanel {
int xMin=-50, xMax=50, yMin=-40, yMax=40;//valore degli estremi del piao cartesiano
int l=500, h=400;//salvo dimensioni della finestra in delle variabili per renderle più facili da utilizzare e da modificare
float intervalloX, intervalloY;
static public float a=30;
public void paintComponent(Graphics g){
super.paintComponent(g); 
setBackground(Color.white); 
intervalloX=l/((float)xMax-xMin);
intervalloY=h/((float)yMax-yMin);

g.setColor(Color.black);
g.drawRect(0,0,l-1,h-1);

g.setColor(Color.red);
g.drawLine(0,h/2, l,h/2);
g.drawLine(l/2,0,l/2,h);

g.drawString(""+xMin, 5,h/2-5);
g.drawString(""+xMax, l-20,h/2-5);
g.drawString(""+yMax, l/2+5,15);
g.drawString(""+yMin, l/2+5,h-5);

g.setColor(Color.blue);
setPixel(g,xMin,f(xMin)); 
for (int ix=1; ix<l; ix++){
float x = xMin+((float)ix)/intervalloX;
setPixel(g,x,f(x));
}
}
static float f(float x){
return (float) a;
}

void setPixel(Graphics g, float x, float y){
if (x<xMin || x>xMax || y<yMin || y>yMax )
return;
int ix = Math.round((x-xMin)*intervalloX);
int iy = h-Math.round((y-yMin)*intervalloY);
g.drawLine(ix,iy,ix,iy);
}
}
UN ALTRA CHE MI CREA UNA FINESTRA:

public class Frame extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Frame frame = new Frame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Frame() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 1200, 600);
		getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
		
		JPanel panel = new CartesianPlane();
		panel.setPreferredSize(new Dimension(500, 400));
		getContentPane().add(panel);
		
		JPanel panel_1 = new JPanel();
		getContentPane().add(panel_1);
		
		JButton btnNewButton = new JButton("New button");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				CartesianPlane.a=(float)-30.0;
			}
		});
		panel_1.add(btnNewButton);

	}

}
gestendo l'evento al click del bottone mi aspettavo che la variabile cambiasse e quindi anche la posizione della retta,ma con molto dispiacere non accade nulla.

Per favore potete spiegarmi dove sta l'errore.

PS: sono uno studente delle superiori che sta cercando di imparare da autodidatta,ogni consiglio su come migliorare il codice è ben accetto

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte