Как написать код, который рисует определенный объект, в данном случае прямоугольник, координаты которого задаются щелчками мыши? - PullRequest
0 голосов
/ 25 апреля 2019

Как мне кодировать апплет, который должен рисовать прямоугольник после каждого второго события щелчка MouseListener, где координаты определяются местами, по которым щелкнули, x для первого щелчка и y для второго?

Ответы [ 3 ]

0 голосов
/ 25 апреля 2019

Вы можете попробовать что-то вроде следующего, где он будет рисовать прямоугольник от первой точки до второй точки.

boolean first = true;

public void mouseClicked(MouseEvent e) {
    Graphics g = getGraphics();
    int x, y, width, height;

    if (first) {
        x = e.getX();
        y = e.getY();
        first = false;
     } if (!first) {
        width = Math.abs(e.getX() - x);
        height = Math.abs(e.getY() - y);
        first = true;
        g.drawRect(x, y, width, height);
    }

}
0 голосов
/ 09 мая 2019

Это полный код.

public class PravougaonikApp extends Applet implements MouseListener{
public PravougaonikApp() {
    addMouseListener(this);

    setSize(300,300);
    setLayout(null);
    setVisible(true);
}

boolean first = true;

public void mouseClicked(MouseEvent e) {
    Graphics g = getGraphics();
    int x=0, y=0, width=0, height=0;


        if (first) {
        x = e.getX();

     } if (!first) {

        y = e.getY();
        width = Math.abs(e.getX() - x);
        height = Math.abs(e.getY() + y);
        first = true;
        g.drawRect(x, y, width, height);
     }
     first = false;

}


public void mouseEntered(MouseEvent arg0) {
}
public void mouseExited(MouseEvent arg0) {
}
public void mousePressed(MouseEvent arg0) {

}
public void mouseReleased(MouseEvent arg0) {

}
0 голосов
/ 25 апреля 2019

Я думал о чем-то вроде этого: public PravougaonikApp () {addMouseListener (this);

    setSize(300,300);
    setLayout(null);
    setVisible(true);
}
int i=0;
int x,y;

public void mouseClicked(MouseEvent e) {
    Graphics g = getGraphics();

    if(i%2==0) {
    x=e.getX();
    i++;
    }
    if(i%2==1) {
    y=e.getY();
    i--;
    g.drawRect(x, y, 100, 50);
    }

}

Он продолжает рисовать прямоугольники при первом щелчке, и да, я знаю, что указалзначения ширины и высоты на 100 и 50, но это только из-за спроса на функции ... Мой вопрос заключается в том, как написать это так, чтобы эти параметры не требовались, или, по крайней мере, где параметры ширины и высотыуказаны координатами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...