أرجو المساعدة
برنامجي هذا شبه كامل وهذا اقتباس منه حتى تساعدوني
MouseDrag
هذا البرنامج يجب أن يرسم أثناء تحريك الماوس ولكنه لا يرسم أثناء التحريك فقط يرسم من نقطة البداية بشكل عشوائي
أرجوكم أرشدوني للطريق الصحيح حتى يتم هذا البرنامج .. أريده أن يرسم أثناء تحريكي للماوس
وفي حال أردتم المشروع كامل ها هو مضغوط
اضغط هنا لتحميل البرنامج كاملا
package mpaint;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Line2D;
import javax.swing.*;
public class Paint extends JPanel implements KeyListener, ActionListener, MouseListener, ItemListener {
private JPanel drawPanel = new JPanel();
private JPanel toolPanel1 = new JPanel();
private String scombo[] = {"choose a shape :)", "Line", "Fill Rect", "Draw Rect", "Fill Arc", "Draw Arc","Fill Oval", "Draw Oval"};
private String draw ;
private JComboBox combo = new JComboBox(scombo);
private JButton choosecolor1 = new JButton("Change Paint Color");
private JButton choosecolor2 = new JButton("Change Background Color");
private JTextField arcAng = new JTextField ("270");
private Color bgcolor = new Color(192, 192, 192);
private Color paintColor = new Color(0, 0, 0);
private GridLayout grid = new GridLayout(2, 4);
private int arc = 0, startX, startY, endX, endY;
static Boolean xy = true;
private int arc1 , arc2;
@SuppressWarnings("LeakingThisInConstruc…
public Paint() {
add(drawPanel, BorderLayout.SOUTH);
choosecolor1.addActionListener(this);
choosecolor2.addActionListener(this);
combo.addItemListener(this);
choosecolor1.setBackground(Color.darkGra…
choosecolor1.setForeground(Color.WHITE);
choosecolor1.setFocusable(false);
choosecolor2.setBackground(Color.darkGra…
choosecolor2.setForeground(Color.WHITE);
choosecolor2.setFocusable(false);
drawPanel.addMouseListener(this);
Main.frame.addMouseListener(this);
combo.setMaximumRowCount(6);
combo.setBackground(Color.LIGHT_GRAY);
combo.setForeground(Color.BLACK);
combo.setFocusable(false);
toolPanel1.setBackground(Color.LIGHT_GRA…
toolPanel1.add(combo);
toolPanel1.add(choosecolor1);
toolPanel1.add(choosecolor2);
toolPanel1.add(arcAng);
toolPanel1.setLayout(grid);
add(toolPanel1, BorderLayout.PAGE_START);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Change Paint Color")) {
paintColor = JColorChooser.showDialog(Paint.this, "Choose Color", paintColor);
} else if (e.getActionCommand().equals("Change Background Color")) {
bgcolor = JColorChooser.showDialog(Paint.this, "Choose Color", bgcolor);
this.setBackground(bgcolor);
} else {
this.setBackground(Color.LIGHT_GRAY);
}
}
public void itemStateChanged(ItemEvent e) {
draw = (String) e.getItem();
}
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
startX = e.getX();
startY = e.getY();
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseDragged(MouseEvent e) {
endX = e.getX();
endY = e.getY();
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (xy) {
if (draw.equals(scombo[1])) {
g.setColor(paintColor);
g.drawLine(startX, startY, endX, endY);
} else if (draw.equals(scombo[2])) {
g.setColor(paintColor);
g.fillRect(startX, startY, Math.abs(startX-endX), (startY-endY));
} else if (draw.equals(scombo[3])) {
g.setColor(paintColor);
g.drawRect(startX, startY, Math.abs(startX-endX), (startY-endY));
} else if (draw.equals(scombo[4])) {
g.setColor(paintColor);
g.drawArc(startX, startY, Math.abs(startX-endX), (startY-endY), 0, 270);
} else if (draw.equals(scombo[5])) {
g.setColor(paintColor);
g.fillArc(startX, startY, Math.abs(startX-endX), (startY-endY), 0, 270);
} else if (draw.equals(scombo[8])) {
g.setColor(paintColor);
g.fillOval(startX, startY, Math.abs(startX-endX), (startY-endY));
} else if (draw.equals(scombo[9])) {
g.setColor(paintColor);
g.drawOval(startX, startY, Math.abs(startX-endX), (startY-endY));
}
}
repaint();
}
}