Java: Как мне отредактировать JFrame, используя переменные? - PullRequest
0 голосов
/ 09 мая 2018

Я довольно новичок в программировании на Java и не могу понять, почему этот код всегда создает пустой JFrame:

mainClass.java:

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;

public class mainClass {
    public static void main(String[] args) {
        drawing d = new drawing();

        d.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        d.setSize(1000, 1000);
        d.setTitle("Test Game");
        d.setVisible(true);
        d.repaint();
        d.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                d.repaint();
            }
        });
    }
}

drawing.java:

import java.awt.*;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
import java.awt.event.*;

public class drawing extends JFrame implements MouseListener{
    public List<units> p1 = new ArrayList<units>();
    public List<units> p2 = new ArrayList<units>();
    JFrame frame = new JFrame();
    public void paint(Graphics g) {
        for(units u : p1) {
            g.setColor(new Color(0,0,255));
            g.drawRect(u.unitX-1, u.unitY-1, u.unitX+1, u.unitY+1);
        }
    }
    public void mousePressed(MouseEvent e) {
        int x = e.getX();
        int y = e.getY();
        p1.add(new units(x,y));

        boolean tryPrint = true;

        if(p1.size()==10 && tryPrint) {
            for(units u : p1) {
                System.out.println(u.unitX + "," + u.unitY);
            }

            tryPrint = false;
        }

        frame.repaint();
    }

    public void mouseClicked(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
}

units.java:

public class units {
    int unitX;
    int unitY;
    units(int x, int y) {
        unitX = x;
        unitY = y;
    }
}

Извините за многословный код. Я считаю, что проблема заключается где-то в моей обработке переменных или классов Любая помощь приветствуется.

Кроме того, этот код отредактирован так, что это может быть причиной того, что некоторые комментарии не имеют смысла.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Похоже, проблема заключалась в том, что я включил класс рисования в JFrame и где найти этот JFrame. Мой окончательный, решенный код выглядит следующим образом:

mainClass.java:

import java.awt.event.*;
import javax.swing.*;

public class mainClass {
    private static int x, y;
    private static drawing d = new drawing();
    public static void main(String[] args) {
        JFrame frame = new JFrame("Mouse");
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1000, 1000);
        frame.setResizable(false);
        frame.add(d);
        d.addMouseListener(new AL());
    }
    static class AL extends MouseAdapter{
        public void mousePressed(MouseEvent e) {
            x = e.getX();
            y = e.getY();
            d.draw(x,y);
        }
    }
}

drawing.java:

import java.awt.*;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;

public class drawing extends JPanel {
    public void draw(int x, int y) {
        p1.add(new ArrayList<Integer>());
        p1.get(p1.size()-1).add(x);
        p1.get(p1.size()-1).add(y);
        repaint();
    }
    public List<List<Integer>> p1 = new ArrayList<List<Integer>>(); 
    public List<List<Integer>> p2 = new ArrayList<List<Integer>>();
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        for(List<Integer> u : p1) {
            g.setColor(new Color(0,0,255));
            g.fillRect(u.get(0)-1, u.get(1)-1, 3, 3);
        }
    }
}
0 голосов
/ 09 мая 2018

Сначала подумайте, что я советую вам использовать более сплоченные занятия. Кроме того, я хотел бы сказать, что вам нужно переопределить метод рисования JFrame вместо создания нового класса для него, см. Пример здесь: http://www.gailer -net.de / tutorials / java3 / Notes / chap56 / ch56_8.html .

Я надеюсь, что вы подаете заявку.

С уважением,

-Rod

...