طلب شرح اضافة مربع او دائرة الى النافذة

the2one

مرحبا ,

انا جديد في عالم برمجة الجافا واريد مساعدة في كتابة كود استطيع من خلاله عند اختيار واحد من هذه الخيارات ( مربع , دائرة , مستطيل ) من Combobox بعد ذالك النقر في اي مكان بالنافذة ويتم رسم الشكل المراد طبعا حسب احداثيات الماوس وانا يكون حجم الشكل محدد مسبقا اي لا حاجة لتحديد الحكم بالمؤشر .

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

            package pro;

            import java.awt.BorderLayout;
            import javax.swing.JPanel;
            import java.awt.FlowLayout;
            import java.awt.event.MouseEvent;
            import java.awt.event.MouseListener;
            import java.awt.Color;
            import java.awt.Graphics;
            import java.awt.event.MouseMotionListener;
            import javax.swing.JFrame;
            import javax.swing.JLabel;


            public class first  extends JFrame {

                private JLabel label;
                private JPanel panel;


                first(){
                    super("title here");
                    setLayout(new BorderLayout());
                    panel = new JPanel();
                    panel.setBackground(Color.white);
                    add(panel,BorderLayout.CENTER);
                    label = new JLabel("Mouse out side the pannel");
                    add(label,BorderLayout.SOUTH);

                    handlerclass handler = new handlerclass();

                    panel.addMouseListener(handler);
                    panel.addMouseMotionListener(handler);

                }




                public class handlerclass implements MouseListener ,  MouseMotionListener{

                    @Override
                    public void mouseClicked(MouseEvent event){

                        label.setText(String.format("you have clicked on %d and %d ", event.getX() , event.getY()));
                        repaint(event.getX(), event.getY(), 100, 100);

                    }

                    @Override
                    public void mousePressed(MouseEvent e) {

                    }

                    @Override
                    public void mouseReleased(MouseEvent e) {}

                    @Override
                    public void mouseEntered(MouseEvent e) { }

                    @Override
                    public void mouseExited(MouseEvent e) {}

                    @Override
                    public void mouseDragged(MouseEvent e) {}

                    @Override
                    public void mouseMoved(MouseEvent event) {
                        label.setText(String.format("You Moved on %d and %d ", event.getX() , event.getY()));
                    }

                }


            }
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

تفضل:

كلاس Main

import java.awt.GridLayout;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import javax.swing.JComboBox;

import javax.swing.JFrame;

public class Main extends JFrame{

MyPanel mP;
public Main(){
    mP=new MyPanel();
    this.setTitle("Test");
    this.setBounds(30, 30, 200, 200);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLayout(new GridLayout(0, 1,30,20));
    JComboBox c=new JComboBox(new String[]{"Circle","Square","Rectangle"});
    c.setSelectedIndex(0);
    c.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent e) {
            mP.shape=c.getSelectedIndex();
        }
    });
    this.add(mP);
    this.add(c);
    this.setVisible(true);
}
public static void main(String[] args){
    new Main();

}

}

كلاس MyPanel:

import java.awt.Graphics; import javax.swing.JPanel;

public class MyPanel extends JPanel{ public int shape=0; @Override public void paint(Graphics g){ g.clearRect(0, 0, getWidth(), getHeight()); switch (shape){ case 0: g.drawOval(10, 10, 30, 30); break; case 1: g.drawRect(10, 10, 30, 30); break; case 2: g.drawRect(10, 10, 50, 30); break; default: g.clearRect(0, 0, getWidth(), getHeight()); } repaint(); }

}