Нарисовать линию на игровом поле - Java
Формулировка задачи:
Задание: нарисовать на игровом поле линию(потом переделаю на то что нужно) при клике
Проблема: поле рисую на ура, а вот линия при клике не рисуется...
import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.*; public class Game extends JFrame{ public static final int n=10; public static void main() { JFrame frame=new JFrame("Test"); frame.setSize(305,330); frame.setVisible(true); frame.setResizable(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel contentPane = new JPanel(){//это рисует Graphics2D g2; protected void paintComponent(Graphics g){ super.paintComponent(g); g2=(Graphics2D)g; for (int i=0;i<frame.getWidth();i=i+(frame.getWidth()-5)/n) { g2.setColor(Color.BLACK); g2.drawLine(i,0, i, frame.getHeight()); } for (int i=0;i<frame.getHeight();i=i+(frame.getHeight()-30)/n) { g2.setColor(Color.BLACK); g2.drawLine(0,i, frame.getWidth(),i); } } }; frame.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); System.out.print(e.getX() / 30); System.out.println((e.getY() / 30) - 1); JPanel X = new JPanel(){//а вот это нет Graphics2D g2; protected void paintComponent(Graphics g){ super.paintComponent(g); g2=(Graphics2D)g; g2.setColor(Color.RED); g2.drawLine(100,100,200,200); } }; contentPane.add(X); } }); frame.setContentPane(contentPane); } }
Решение задачи: «Нарисовать линию на игровом поле»
textual
Листинг программы
JPanel contentPane = new JPanel(){ Graphics2D g2; @Override protected void paintComponent(Graphics g){ super.paintComponent(g); g2=(Graphics2D)g; for (int i=0;i<frame.getWidth();i=i+(frame.getWidth()-5)/n) { g2.setColor(Color.BLACK); g2.drawLine(i,0, i, frame.getHeight()); } for (int i=0;i<frame.getHeight();i=i+(frame.getHeight()-30)/n) { g2.setColor(Color.BLACK); g2.drawLine(0,i, frame.getWidth(),i); } addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { super.mouseClicked(e); lines.add(new Line2D.Float(100, 100, 200, 200)); for (int i = 0; i < lines.size(); i++) { g2.setColor(Color.red); g2.draw(lines.get(i)); } repaint(); } }); } };
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д