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

MouseEvent

بدأه ريحانة الاقصى في 29 أبريل 2011 · 5 رد · 452 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لو سمحتو ممكن مساعدة في هاد الكود

المفروض انو البرنامج بعدالضغط على الماوس يقوم برسم دائرة على البنل ولكن المشكلة البرنامج يقوم بحذف السابقة كيف احتفظ بالجميع

             
import java.util.ArrayList;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.ArrayList;


public class TestPanelDrawing2 extends JPanel implements MouseListener,MouseMotionListener {

static int x;static int y;
 static  ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();

        public void mouseDragged(MouseEvent e) {


        	}

        public void mouseMoved (MouseEvent e) {}



        public void mouseClicked(MouseEvent e){
        x=e.getX();
        y=e.getY();
        repaint();
      // add(new drowcycle());
        }

    public void mouseEntered(MouseEvent e) {}           
    public void mousePressed(MouseEvent e){}     
    public void	mouseReleased(MouseEvent e) {}
    public void	mouseExited(MouseEvent e) {}


     public TestPanelDrawing2() {

     addMouseListener(this);
     addMouseMotionListener(this);

   }



        public static void main(String[] args) {
        TestPanelDrawing2 p = new TestPanelDrawing2();
        JFrame frame=new JFrame();
        frame.add(p);
        frame.setTitle("TestPanelDrawing");
        frame.setLocationRelativeTo(null); // Center the frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 400);
        frame.setVisible(true);
        }


      public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawOval(x,y,20,20);
      //  g.drawString(length,x,y);
    }

}

تم تعديل هذه المشاركة بواسطة ريحانة الاقصى في 29 أبريل 2011 في 19:52

#2

قمت بعمل ميثود للرسم وتخزين في اري لسن ولكن لا يظهر عند الضغط اي شي ولا اعرف السبب

                                    
import java.util.ArrayList;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.ArrayList;


public class TestPanelDrawing2 extends JPanel implements MouseListener,MouseMotionListener {

static int x;static int y;
 static  ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();

        public void mouseDragged(MouseEvent e) {


        	}

        public void mouseMoved (MouseEvent e) {}



        public void mouseClicked(MouseEvent e){
        x=e.getX();
        y=e.getY();
      //  repaint();
    add(new drowcycle());
        }

    public void mouseEntered(MouseEvent e) {}           
    public void mousePressed(MouseEvent e){}     
    public void	mouseReleased(MouseEvent e) {}
    public void	mouseExited(MouseEvent e) {}


     public TestPanelDrawing2() {

     addMouseListener(this);
     addMouseMotionListener(this);

   }



        public static void main(String[] args) {
        TestPanelDrawing2 p = new TestPanelDrawing2();
        JFrame frame=new JFrame();
        frame.add(p);
        frame.setTitle("TestPanelDrawing");
        frame.setLocationRelativeTo(null); // Center the frame
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 400);
        frame.setVisible(true);
        }


      public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawOval(x,y,20,20);
      //  g.drawString(length,x,y);
    }

}

class drowcycle extends JPanel {

        public void paint(Graphics g) {
        Font r = new Font("SansSerif", Font.BOLD, 16);
        g.setFont(r);
        draw(g);
        }

        public void draw(Graphics g) {

                Graphics2D g2 = (Graphics2D) g;
                super.paint(g);
                int x1=TestPanelDrawing2.x;
              	int y1=TestPanelDrawing2.y;

                Ellipse2D.Double a = new Ellipse2D.Double(x1 + 5, y1, 15, 15);
                TestPanelDrawing2.vert.add(a);
                g.drawString(" A", x1 + 5, y1);

                g2.fill(new Ellipse2D.Double(x1, y1, 15, 15));


        }
        }


class drowline extends JPanel {

        public void paint(Graphics g) {
        Font r = new Font("SansSerif", Font.BOLD, 16);
        g.setFont(r);
        draw(g);
        }

        public void draw(Graphics g) {

                Graphics2D g2 = (Graphics2D) g;
                super.paint(g);
                int x1=TestPanelDrawing2.x;
              	int y1=TestPanelDrawing2.y;


                g.drawString(" A", x1 + 5, y1);

                g2.fill(new Ellipse2D.Double(x1, y1, 15, 15));


        }
        }
#3

التصميم غير صحيح

انا عدلته يمكنك النظر اليه

وهو ايضا تصميم مبدئى وبسيط

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.ArrayList;

public class TestPanelDrawing2 extends JPanel implements MouseListener {

	static int x;
	static int y;
	static ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();

	@Override
	public void mouseClicked(MouseEvent e) {
    	x = e.getX();
    	y = e.getY();
    	drawNode();
	}

	@Override
	public void mouseEntered(MouseEvent e) {
	}

	@Override
	public void mousePressed(MouseEvent e) {
	}

	@Override
	public void mouseReleased(MouseEvent e) {
	}

	@Override
	public void mouseExited(MouseEvent e) {
	}

	public TestPanelDrawing2() {
    	addMouseListener(this);
	}

	public void drawNode() {
    	Graphics g = getGraphics();
    	Graphics2D g2 = (Graphics2D) g;
    	int x1 = TestPanelDrawing2.x;
    	int y1 = TestPanelDrawing2.y;

    	Ellipse2D.Double a = new Ellipse2D.Double(x1 + 5, y1, 15, 15);
    	TestPanelDrawing2.vert.add(a);
    	for (int i = 0; i < vert.size(); i++) {
        	Ellipse2D.Double d = vert.get(i);
        	g2.draw(d);
        	g.drawString((char) (65 + i) + "", (int) (d.x + 5), (int) d.y);
        	g2.fill(new Ellipse2D.Double(d.x, d.y, 15, 15));
    	}
	}

	public static void main(String[] args) {
    	TestPanelDrawing2 p = new TestPanelDrawing2();
    	JFrame frame = new JFrame();
    	frame.add(p);
    	frame.setTitle("TestPanelDrawing");
    	frame.setLocationRelativeTo(null); // Center the frame
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setSize(600, 400);
    	frame.setVisible(true);
	}
}

بالتوفيق

1

Software Developer
Mahmoudkelany.com


 

#4

شكرا جزيلا

ولكن هل لي بسؤال اخر

اريد في المرحلة التالية رسم خطوط بين هذه النقاط باستخدام mouseDragged

كيف احدد احداثيات بين النقطتين

مثلا اذا اردت رسم خط بين a b

كيف احصل على احداثيات البداية والنهاية

#5

عندي تعليق بسيط بس

كنت ممكن تستخدم ال MouseAdapterبدل ما تعمل implementation لكل الميثدوس اللي موجوده في الانترفيس

#6

بالنسبه لمعرفه نقط x, y لكل من نقطه يمكننك ذلك عن طريق التالى

Ellipse2D.Double d = vert.get(i);
        	int x = d.x;
        	int y = d.y;

بالتوفيق

Alex programmer كتب:

عندي تعليق بسيط بس

كنت ممكن تستخدم ال MouseAdapterبدل ما تعمل implementation لكل الميثدوس اللي موجوده في الانترفيس

اعتقد انها ممكن تستخدم باقى الدول بعد ذلك

لكن تعليق جيد وانا كنت عاوز اعدله لكن قولت علشان مش الخطبها اكتر

1

Software Developer
Mahmoudkelany.com