الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة في برنامج رسام بلغة الجافا

بدأه HASAN91 في 1 نوفمبر 2010 · 3 رد · 1,557 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أرجو المساعدة

برنامجي هذا شبه كامل وهذا اقتباس منه حتى تساعدوني

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();


}

}
#2
HASAN91 كتب:

أرجو المساعدة

برنامجي هذا شبه كامل وهذا اقتباس منه حتى تساعدوني

MouseDrag

هذا البرنامج يجب أن يرسم أثناء تحريك الماوس ولكنه لا يرسم أثناء التحريك فقط يرسم من نقطة البداية بشكل عشوائي

أرجوكم أرشدوني للطريق الصحيح حتى يتم هذا البرنامج .. أريده أن يرسم أثناء تحريكي للماوس

جرب هذا وتعلم منه كيف يتم ذلك

import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;

/**
 *
 * @author Mahmoud Kelany
 */
public class DrawLine extends JFrame {

	static int x1, y1, x2, y2;

	public DrawLine() {
	}

	@Override
	public void paint(Graphics g) {
    	super.paint(g);
    	if (x1 > 0 && y1 > 0) {
        	g.drawLine(x1, y1, x2, y2);
    	}
	}
	static DrawLine line = new DrawLine();
	static int count;

	public static void main(String[] args) {
    	line.addMouseListener(new MouseListener() {

        	public void mouseClicked(MouseEvent e) {
        	}

        	public void mousePressed(MouseEvent e) {
            	count++;
            	if (count == 1) {
                	x1 = e.getX();
                	y1 = e.getY();
            	} else if (count == 2) {
                	x2 = e.getX();
                	y2 = e.getY();
            	} else if (count > 2) {
                	count = 0;
            	}

        	}

        	public void mouseReleased(MouseEvent e) {
        	}

        	public void mouseEntered(MouseEvent e) {
        	}

        	public void mouseExited(MouseEvent e) {
        	}
    	});
    	line.addMouseMotionListener(new MouseMotionListener() {

        	public void mouseDragged(MouseEvent e) {
        	}

        	public void mouseMoved(MouseEvent e) {
            	if (count != 2) {
                	x2 = e.getX();
                	y2 = e.getY();
                	line.repaint();
            	}
        	}
    	});
    	line.setSize(600, 600);
    	line.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	line.setVisible(true);
	}
}
1

Software Developer
Mahmoudkelany.com


 

#3

شكرا أخي

ولكن فقط تعديل بسيط .. حتى يتم الرسم بعد ان تترك الماوس

يجب أن تضع ما وضعته في ال mouseMoved تضعه في mouseDragged وهكذا سيرسم بلا أي مشاكل

وللمرة الثانية شكرا جزيلا

هذا رابط الواجب الخاص بالرسام

Painter

وهذا رابط لمشروع سابق .. آلة حاسبة

Calculator

____________

بامكانك أن تعتبر الأمر كالكود المفتوح Open Source

وأتمنى أن أستطيع التواصل معك مثلا على الفيسبوك .. وهذا هو حسابس على الفيسبوك

Hasan Al-Khatib

#4
HASAN91 كتب:

وأتمنى أن أستطيع التواصل معك مثلا على الفيسبوك .. وهذا هو حسابس على الفيسبوك

Hasan Al-Khatib

تم الاضافه اخى الكريم

Software Developer
Mahmoudkelany.com


 

مواضيع مشابهة