طلب شرح اضافة مربع او دائرة الى النافذة
مرحبا ,
انا جديد في عالم برمجة الجافا واريد مساعدة في كتابة كود استطيع من خلاله عند اختيار واحد من هذه الخيارات ( مربع , دائرة , مستطيل ) من 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(); }
}