Hallo,
ich bin relativer Java-Neuling und stehe vor folgendem Problem. Ich entwickle ein Programm das Werte in ein Koordinatensystem überträgt. Für das Koordinatensystem habe ich fie folgende Vorlage:
Mein JPanel heist canvas. Wenn ich nun den Befehl "super.paintComponent(g);" - welcher eine Fehlermeldung ausspuckt - durch canvas.paintComponents(g); ersetze, passiert nichts. Was mache ich falsch?
Danke für eure Hilfe
ich bin relativer Java-Neuling und stehe vor folgendem Problem. Ich entwickle ein Programm das Werte in ein Koordinatensystem überträgt. Für das Koordinatensystem habe ich fie folgende Vorlage:
Code:
final int maxX = 4;
final int maxY = 4;
final int PAD = 20;
final int SPAD = 3;
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
setBackground(new Color(255,255,255));
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
int w = getWidth();
int h = getHeight();
float xInc = (float)(w - 2*PAD)/(2*maxX);
float yInc = (float)(h - 2*PAD)/(2*maxY);
// Draw abcissa.
g2.draw(new Line2D.Double(PAD, PAD, PAD, h-PAD));
// Draw ordinate.
g2.draw(new Line2D.Double(PAD, h-PAD, w-PAD, h-PAD));
// Draw Axes Labels.
Font font = g2.getFont().deriveFont(14f);
g2.setFont(font);
FontRenderContext frc = g2.getFontRenderContext();
LineMetrics lm = font.getLineMetrics("0", frc);
float ascent = lm.getAscent();
// Abcissa.
for(int j = 0; j <= 2*maxX; j++) {
String s = String.valueOf(j);
float width = (float)font.getStringBounds(s, frc).getWidth();
float sx = PAD + j*xInc - width/2;
float sy = h-PAD + lm.getAscent() + SPAD;
g2.drawString(s, sx, sy);
}
// Ordinate.
int j2 = 2*maxY+1;
for(int j = 0; j <= 2*maxY; j++) {
j2--;
String s = String.valueOf(j);
float sx = SPAD;
float sy = PAD + j2*yInc + ascent/2;
g2.drawString(s, sx, sy);
}
g2.setPaint(Color.blue);
// Y-Kooirdinate = PAD + (maxY*2 - WERT)*yInc;
// X-Koordinate = WERT*xInc + PAD;
double y1 = PAD + (maxY*2 - 0)*yInc;
double y2 = PAD + (maxY*2 - 6)*yInc;
double x1 = 0*xInc + PAD;
double x2 = 4*xInc + PAD;
g2.draw(new Line2D.Double(x1,y1,x2,y2));
}
Mein JPanel heist canvas. Wenn ich nun den Befehl "super.paintComponent(g);" - welcher eine Fehlermeldung ausspuckt - durch canvas.paintComponents(g); ersetze, passiert nichts. Was mache ich falsch?
Danke für eure Hilfe