سلام
من میخام یه چیزی شبیه برنامه paint بسازم که وقتی دایره رو میخام بسازم همون اول بتونم با ماوس درگ کنمو اندازشو با ماوس بکشم و ست کنم . کداشو نوشتم ولی نمیدونم چرا خوب اجرا نمیشه قبلا اینکارو کرده بودم ولی الان یادم رفته چوری بود اون موقع خوب نشون میداد ولی الان صفجه رو موقع درگ کردن ریفرش نمیکنه ، بعد از اینکه پنجره رو تغییر اندازه میدم فقط صفحه ریفرش میشه . ببینید مشکل کدم چیه من که هرچی فکر کردم نتونستم بفهمم . مغزم پوکید
این کلاس دایره :
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Point;
public class Cricle extends Component{
private float radios;
private float dimiter;// شعاع
private float mohit;
private float masahat;
private int X;
private int Y;
public float getRadios() {
return radios;
}
public float getDimiter() {
return dimiter;
}
public void setRadios(float radios) {
this.radios = radios;
this.dimiter=radios*2;
this.masahat=(float) (Math.PI*radios*radios);
this.mohit=(float) (Math.PI*2*radios);
}
public void setDimiter(float dimiter) {
setRadios(dimiter/2);
}
public float getMohit() {
return (float) (2*radios*Math.PI);
}
public void setMohit(float mohit) {
setRadios((float) (mohit/Math.PI/2));
}
public float getMasahat() {
return masahat;
}
public void setMasahat(float masahat) {
setRadios((float) (mohit/Math.PI/2));
}
public Cricle(Point p,float dimiter) {
setDimiter(dimiter);
X=p.x;
Y=p.y;
}
public Cricle() {
}
public Cricle(Point p,int dimiter) {
setDimiter(dimiter);
X=p.x;
Y=p.y;
}
public void draw(Graphics g){
g.drawOval(X, Y, (int)radios, (int)radios);
}
}
این کلاس panel
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.*;
public class MyPanel extends JPanel {
MouseEvent ev=null;
int r=100;
Cricle cricle;
Point firstp;
MyPanel() {
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
firstp=e.getPoint();
cricle=new Cricle(firstp, 0);
}
});
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
r=e.getX();
cricle.setRadios(r);
refresh();
}
});
}
public void refresh(){
this.repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponents(g);
if(firstp!=null)
cricle.draw(g);
}
}
اینم که کلاس اصلی :
import javax.swing.JFrame;
public class JavaApplication17 {
public static void main(String[] args) {
JFrame fram=new JFrame();
MyPanel panel=new MyPanel();
fram.setSize(400,400);
fram.add(panel);
fram.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
fram.setVisible(true);
}
}
[COLOR=inherit !important]
[/COLOR]