Java javax. Swing. Vonal Rajzolás Változóval Hogy csináljam?
Az volna hogy úgy akarok vonalakat rajzolni hogy a vonal pontjait egy listából szedje ki de sehogy se akar lefordulni a kód.
g.drawLine(10,10, 50, 50); Itt a 10,10,50,50 helyett.
Program
import java.awt.*;
import javax.swing.*;
class Program extends JFrame {
Canvas vaszon = new Vaszon();
Program() {
add(vaszon);
setSize(300, 200);
setVisible(true);
}
class Vaszon extends Canvas {
public void paint(Graphics g) {
g.drawLine(10,10, 50, 50);
}
}
public static void main(String args[]) {
new Program();
}
}
> sehogy se akar lefordulni a kód
Mi a hibaüzenet?
#2:
Mivel ott van alatta a definíció, az pont stimmel.
class Vaszon extends Canvas {
Ez nem ír hibát. de amint megprobálok bemenő paramétert adni valahova hiba...
pl ide: class Vaszon extends Canvas(int x, int y)
vagy
public void paint(Graphics g, int x, int y)
de megoldottam igy:
import java.awt.*;
import javax.swing.*;
class Program extends JFrame {
Canvas vaszon = new Vaszon();
Program() {
add(vaszon);
setSize(300, 200);
setVisible(true);
}
class Vaszon extends Canvas {
public void paint(Graphics g) {
szamok ertekad = new szamok();
int x = ertekad.x();
int y = ertekad.y();
g.drawLine(x,y, 40, 40);
}
}
class szamok {
int x() {
int x = 5;
return x; // Ide már eget settel akár filból is át irthatom
}
int y() {
int y = 15; // És itt is
return y;
}
}
public static void main(String args[]) {
new Program();
}
}
<idézet>
pl ide: class Vaszon extends Canvas(int x, int y)
vagy
public void paint(Graphics g, int x, int y)
</idézet>
Akkor ezen a ponton javaslok neked valamit, a legjobb szándékkal. Felejtsd el a GUI-t, felejts el mindent, és kezdd el a Java-t tanulni elölről, mert alapvető dolgokkal (szintaxis és fogalmak) nem vagy tisztában.
Elmagyarázom mi a rossz az idézetben:
Az első sor egy osztálydefiníció. Definiálod a Vaszon osztályodat, ami a Canvas leszármazottja. Itt nem adhatsz paramétert, mert értelmetlen. A Canvas egy osztály, nem metódus. (Osztálydefiníciókban típusparamétert lehet adni maximum, de csak generikus osztályoknál, itt erről nincsen szó.)
A második sorodnál a paint metódus kiegészítve lefordul ugyan, de az már nem a Canvas paint metódusának felüldefiniálása lesz, pedig azt kellene tenni, hogy működjön a GUI.
Ami egy tisztább megoldás lehetne:
class Vaszon extends Canvas {
private int x,y;
public Vaszon(int x,y) { this.x=x; this.y=y; }
public void paint(Graphics g) { g.drawLine(x,y,40,40); }
} // class
Főprogramból: new Vaszon(5, 15);
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!