[Java] Line2D и Line2D.Double

feliks28

Компилятор упорно видит Line2D.Double как метод Double класса Line2D :

C:\j2sdk\java\my learning\Sketch.java:55: cannot resolve symbol
symbol : method Double (java.awt.geom.Point2D,java.awt.geom.Point2D)
location: class java.awt.geom.Line2D
Line2D line = Line2D.Double(last, end);
^
1 error
Tool completed with exit code 1


Как бы это побороть?

puare

ээээ.... а что там написано по-твоему?
дай побольше кода, мож что подскажу...

feliks28



import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import java.awt.geom.Line2D.Double;
import java.awt.geom.Line2D;
import java.util.ArrayList;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import java.awt.Container;
public class Sketch
{
public static void main(String[] args)
{
SketchFrame frame = new SketchFrame;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show;
}
}
class SketchFrame extends JFrame
{
public SketchFrame
{
setTitle("Sketch");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
SketchPanel panel = new SketchPanel;
Container contentPane = getContentPane;
contentPane.add(panel);
}
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
}
class SketchPanel extends JPanel
{
public SketchPanel
{
last = new Point2D.Double(100, 100);
lines = new ArrayList;
KeyHandler listener = new KeyHandler;
addKeyListener(listener);
setFocusable(true);
}
public void add(int dx, int dy)
{
Point2D end = new Point2D.Double(last.getX + dx, last.getY + dy);
Line2D line = Line2D.Double(last, end);
lines.add(line);
repaint;
last = end;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
for(int i = 0; i < lines.size; i++)
{
g2.drawLine2D)lines.get(i;
}
}
private Point2D last;
private ArrayList lines;
private static final int SMALL_INCREMENT = 1;
private static final int LARGE_INCREMENT = 5;
private class KeyHandler implements KeyListener
{
public void keyPressed(KeyEvent event)
{
int keyCode = event.getKeyCode;
int d;
if(event.isShiftDown
d = LARGE_INCREMENT;
else
d = SMALL_INCREMENT;
if(keyCode == KeyEvent.VK_LEFT) add(-d, 0);
else if(keyCode == KeyEvent.VK_RIGHT) add(d, 0);
else if(keyCode == KeyEvent.VK_UP) add(0, -d);
else if(keyCode == KeyEvent.VK_DOWN) add(0, d);
}
public void keyReleased(KeyEvent event) {}
public void keyTyped(KeyEvent event)
{
char keyChar = event.getKeyChar;
int d;
if(Character.isUpperCase(keyChar
{
d = LARGE_INCREMENT;
keyChar = Character.toLowerCase(keyChar);
}
else
d = SMALL_INCREMENT;
if(keyChar == 'a') add(-d, 0);
else if(keyChar == 'd') add(d, 0);
else if(keyChar == 'w') add(0, -d);
else if(keyChar == 's') add(0, -d);
}
}
}

puare

гы! надо писать
Line2D line = new Line2D.Double(last, end);
так же точно, как и в строчке прямо над этим написано
ты ж конструктор вызвать хочешь у inner class, да?

feliks28

Ага, спасибо
Затупил
Оставить комментарий
Имя или ник:
Комментарий: