2013-09-17 1 views
0

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

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

ОК .. окрашенный прямоугольник, он фактически находится за пределами JPanel, который содержит изображение, он не держится внутри границ, поэтому, когда пользователь перетаскивает мышь, я хочу сохранить ее внутри, никогда не гаснет, потому что это даст пустой X и Y, и даст вам и исключение RasterFormatException, x лежит за пределами растра !! Может ли кто-нибудь помочь мне контролировать окрашенный прямоугольник?

заранее спасибо ..

+0

* «получил?» * Для более эффективной помощи, отправьте сообщение [SSCCE] (http://sscce.org/). –

ответ

2

В вашем MouseMotionListener, метод mouseDragged, проверьте, чтобы увидеть, если указатель мыши находится вне пределов вашего JPanel, а затем реагировать соответствующим образом, если это.

public void mouseDragged(MouseEvent me) { 
    Dimension d = getSize(); 
    Point p = me.getPoint(); 
    if (p.x > d.x || p.x < 0 || p.y > d.y ||d.y < 0) { 
    // set drawing parameters to zero 
    repaint(); 
    return; 
    } 

    // other mouse drawing code 
} 
Смежные вопросы