2015-10-07 3 views
0

Мне нужно нарисовать линию в JPanel с помощью мыши, щелкнув две точки в панели. Первый щелчок будет началом строки, а второй щелчок будет концом строки.Рисование линии с помощью мыши в JPanel на NetBeans

This is my programm

У меня есть что-то вроде этого:

private void jPanel1MouseClicked(java.awt.event.MouseEvent evt) {          
    // TODO add your handling code here: 
    Graphics g = this.jPanel1.getGraphics(); 

    int x = evt.getX(); 
    int y = evt.getY(); 

    g.drawLine(x, y, x, y); 
}  

Но он рисует только пиксель. Line with coordinates Мне нужно что-то подобное, но просто нарисовать его щелчком мыши.

ответ

1

Вы рисуете линию от (x, y) до (x, y), поэтому вы получаете только один пиксель. Вам нужно зафиксировать координаты первого щелчка, а затем нарисуйте линию на втором клике.

private int startX = -1; 
private int startY = -1; 

private void jPanel1MouseClicked(java.awt.event.MouseEvent evt) {          
    if (startX == -1 && startY == -1) { 
     startX = evt.getX(); 
     startY = evt.getY(); 
    } else { 
     Graphics g = this.jPanel1.getGraphics(); 
     g.drawLine(startX, startY, 
        evt.getX(), evt.getY()); 
     // reset the start point 
     startX = -1; 
     startY = -1; 
    } 
}  
+0

Но что я определяю как x, y? –

+1

@NaurisLinde отредактировал пример, теперь он должен работать –

+0

'private int startX = -1; private int startY = -1; ' Могу ли я определить их как-то иначе? Как внутри частной пустоты? –

1

Из дока

рисует линию, используя текущий цвет, между точками (x1, y1) и (х2, у2) в этом графическом контексте координатной системы.

В вашем случае x1 = x2 и y1 = y2, поэтому ваша линия имеет длину 1 пиксель. После каждого щелчка вы должны записать координаты вашего клика, чтобы вы могли использовать их в качестве источника строки для следующего щелчка.

Смежные вопросы