Нарисовать линию на игровом поле - 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();
- }
- });
- }
- };
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д