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