В такой программе для рисования, как Microsoft PaintTM, одной из доступных функций является рисование прямых линий. Вы
Можно нарисовать прямую линию, нажав на мышь, чтобы указать, где должна начинаться линия. Затем с
мышь все еще нажата, вы можете переместить мышь (перетаскивание мыши), и конечная точка линии
создан как вы двигаетесь. Когда вы отпустите кнопку мыши, линия останется. Вы можете повторить этот процесс много
время, создавая много разных строк в вашем документе PaintTM.
Если вы хотите эмулировать этот эффект в Java-программе, вы можете использовать MouseListener (mousePressed
method) и MouseMotionListener (метод mouseDragged) для создания сегмента линии. Кроме того, мы
хотел бы иметь возможность очистить область рисования с помощью «кнопки очистки» вверху. Кроме того, мы хотели бы изменить
цвета всех линий, поместив несколько «цветных кнопок» вверху. Для того, чтобы выполнить все это,
вам нужно будет использовать массивы координат, потому что каждый раз, когда вы вызываете перерисовку, вам нужно будет перерисовать все
строки хранятся.
* /
import java.awt.*;
import java.awt.event.*; //brings in the ability to read loops by 'event' of something
import javax.swing.*; //interface that extends both the MouseMotionListener and MouseListener interfaces
public class Draw extends JApplet implements MouseListener, MouseMotionListener
{
private int [] x;
private int [] y;
private boolean changed = true;
Display draw;
public void init()
{
draw = new Display(); //use Display not draw
setContentPane(draw); //lets you draw the stuff
draw.setBackground(Color.green); //sets the background color to whatever you want
draw.setFont (new Font("SansSerif", Font.BOLD, 24)); //this sets the font size and type
draw.addMouseListener(this);
draw.addMouseMotionListener(this); //adds the MouseMotionListener
} //to read in actions of the mouse
class Display extends JPanel
{
public void paintComponent(Graphics g) //Graphics __ <--name can be anything
{
super.paintComponent(g); //paintComponent(__) <-- __ has to match w/ the one above
g.setColor(Color.black); //these are the 5 buttons at the top
g.fillRect(2, 2, 95, 70); //
g.setColor(Color.red); //
g.fillRect(100, 2, 95, 70); //
g.setColor(Color.blue); //
g.fillRect(198, 2, 95, 70); //
g.setColor(Color.gray); //
g.fillRect(296, 2, 95, 70); //
g.setColor(Color.cyan); //
g.fillRect(394, 2, 95, 70); //
g.setColor(Color.white);
g.drawString("RESET", 10, 45);
g.drawString("RED", 125, 45);
g.drawString("BLUE", 215, 45);
g.drawString("GRAY", 310, 45);
g.drawString("CYAN", 410, 45);
}
}
public void mousePressed(MouseEvent evt)
{
int x = evt.getX();
int y = evt.getY();
changed = false;
if (y > 2 && y < 70)
{
changed = true;
if (x > 2 && x < 100)
{
draw.repaint();
}
else
changed = false;
}
}
public void mouseDragged(MouseEvent evt)
{
}
public void mouseReleased(MouseEvent evt) {}
public void mouseMoved(MouseEvent evt) {}
public void mouseEntered(MouseEvent evt) {} // Some empty routines.
public void mouseExited(MouseEvent evt) {} // (Required by the MouseListener
public void mouseClicked(MouseEvent evt) {} // and MouseMotionListener interfaces).
}