Я работаю над Java-интерфейсом с программированием сокетов. Я рисую фигуры на стороне клиента с данными с сервера.
Сначала я поместил входящие данные в массив, а затем попытался нарисовать его. Моя проблема в том, что я хочу нарисовать все фигуры в списке, но каждый элемент теряется после рисования. Я хочу нарисовать все фигуры, которые я не хочу видеть одну за другой.
Мой код на стороне клиента;
public void starteGame(String received) {
Info.shapes = new ArrayList<Shape>();
String[] mParsed = received.split(" ");
int width = Integer.parseInt(mParsed[2]);
int height = Integer.parseInt(mParsed[1]);
int x1 = Integer.parseInt(mParsed[3]);
int y1 = Integer.parseInt(mParsed[4]);
int x2 = Integer.parseInt(mParsed[5]);
int y2 = Integer.parseInt(mParsed[6]);
int randomShape = Integer.parseInt(mParsed[7]);
Color firstColor = new Color(Integer.parseInt(mParsed[8]), true);
Color secondColor = new Color(Integer.parseInt(mParsed[9]), true);
boolean cyclic = Boolean.parseBoolean(mParsed[10]);
Shape shapeEx = new Shape(randomShape, x1, y1, x2, y2, firstColor,
secondColor, cyclic);
Info.shapes.add(shapeEx);
showShapes(width, height);
}
public void showShapes(int height, int width) {
JFrame frame = new JFrame();
PanelDraw panel = new PanelDraw(width, height );
frame.add(panel);
frame.setSize(width, height);
frame.setBackground(Color.RED);
frame.setUndecorated(true);
frame.setLocation(0, 400);
frame.setVisible(true);
}
И еще одна функция;
public class PanelDraw extends JPanel {
private MyShape myShape;
int width;
int height;
// constructor, creates a panel with random shapes
public PanelDraw(int width, int height) {
this.width = width;
this.height = height;
setBackground( Color.BLACK );
} // end DrawPanel constructor
// end method
// for each shape array, draw the individual shapes
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
boolean filled = true;
for (Shape shape : Info.shapes) {
switch (shape.Type) {
case 1:
myShape = new MyPolygon(shape.X1, shape.Y1, shape.X2, shape.Y2, shape.FirstColor, filled);
break;
case 2:
myShape = new MyRectangle(shape.X1, shape.Y1, shape.X2, shape.Y2, shape.FirstColor, filled);
break;
case 3:
myShape = new MyOval(shape.X1, shape.Y1, shape.X2, shape.Y2, shape.FirstColor, filled);
break;
}
Graphics2D g2d = (Graphics2D) g; // cast g to Graphics2D
g2d.setPaint(new GradientPaint(shape.X1, shape.Y1, shape.FirstColor, shape.X2, shape.Y2,
shape.SecondColor, shape.cyclic));
myShape.draw(g2d);
}
} // end method paintComponent
}
Вы можете мне помочь?