سلام ياشباب
انا هنا فى الكود ده المشكلة انى لما اضغط على الزرار ثم بالماوس ارسم عى ال bufferedimage
لا يتم الرسم و لكن عندما اضغط بالماوس فى نقطيتن مختلفين على الbufferedimage
ثم على الزرار يتم رسم الخط
وهذا ليس ما اريده ... ماريدهو هو ان عندما اضغط على الزار ثم اذهي بالموس على الbufferedimage
استطيع الرسم
و هناك ايضا مشكلة اخرى تراودنى و هى انى اريد عندا ارسم خط و اضغط كليك على الماوس
يظهر نقطتين لونهم اسود نقطة فى بداية الخط و اخرى فى نهايته كى ما استطيع شد الخط
اتمنى ولو حتى اى حد يلمحلى على طريقة تنفيذ الفكرة الاخيرة دى
و ادى الكود بتاعى
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TextDemo extends JFrame{
private JButton text=new JButton("draw text");
private JPanel panelButton=new JPanel();
private DrawText drawtext=new DrawText();
public TextDemo(){
panelButton.add(text);
text.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
drawtext.draw();
}
});
getContentPane().add(panelButton,BorderLayout.NORTH);
getContentPane().add(drawtext,BorderLayout.CENTER);
}
public static void main(String[]args){
JFrame frame=new TextDemo();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setSize(500,250);
}
}و أدى الكلاس التانى
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class DrawText extends JPanel {
private Point p1 = new Point();
private Point p2 = new Point();
public BufferedImage image;
Graphics g;
public DrawText() {
image = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_RGB);
g = image.getGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, 1000, 1000);
g.setColor(Color.BLACK);
MymouseAdapter mouse = new MymouseAdapter();
addMouseListener(mouse);
addMouseMotionListener(mouse);
}
@Override
public void paint(Graphics g) {
super.paintComponents(g);
g.drawImage(image, 0, 0, null);
}
public class MymouseAdapter extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
p1 = e.getPoint();
}
@Override
public void mouseReleased(MouseEvent e) {
p2 = e.getPoint();
//repaint();
}
}
public void draw() {
g.setColor(Color.BLACK);
g.drawLine(p1.x, p1.y, p2.x, p2.y);
repaint();
}
}