PDA

View Full Version : bắt sự kiện trong java



hieugallant_88
23-09-2009, 14:24
chào các bạn, mình có một vấn đề muốn đựoc các bạn chỉ giúp. Mình muốn dùng "chuột vẽ một đường thẳng từ 2 điểm bất kì". nhưng mình gặp vấn đề là đường thẳng mình vẽ chỉ xuất phát từ 1 điểm, nghĩa là khi mình nhấp chuột thì 1 đừong thẳng đựoc tạo ra từ 1 điểm cố định.Hàm mousePressed duỳng để bắt sự kiện này nhưng mình không biết phải dùng thế nào nữa. mong các bạn chỉ giúp. thanks.........

freshgraduate09
23-09-2009, 15:14
vào java2s.com thì đầy ví dụ cho bạn học

về ý tưởng: có 2 cách thực hiện

1/ bạn click xuống canvas -> lưu lại x1,y1 -> buông chuột -> click lên 1 điểm khác -> lưu lại x2,y2 -> vẽ line từ x1,y1 -> x2,y2

2/ bạn click xuống canvas -> lưu lại x1,y1 -> nắm giữ chuột trái, và rê chuột đến chỗ khác buông ra -> ngay tại chỗ buông -> lưu lại x2,y2 -> vẽ line từ x1,y1 -> x2,y2

Trong MouseListener có 6 MouseEvent, vào java2s đọc code thử xem

lamtienanh
23-09-2009, 16:11
Trong Java để "lắng nghe" sự kiện ta phải implement các interface Listener. Cụ thể : với Jbutton implement ActionListener, MouseEvent implement MouseListener....

Sau đó phải đăng kí class đã implement listener với đối tượng (source event).Cụ thể : button, frame....

viết lại hàm thực hiện sự kiện theo ý mình : với button là actionPerformed, với mouse thì có các hàm MousePressed() mouseClicked()...

Mình sẽ viết code vd cụ thể cho vấn đề của bạn sau.

freshgraduate09
23-09-2009, 16:16
mình không rành về Graphics và vẽ vời, nên chỉ demo cho bạn phần bắt event trên mouse thôi



import java.awt.*;
import java.awt.event.*;
import java.awt.event.MouseListener.*;
import java.awt.event.WindowListener.*;


public class MyCanvas extends Frame
{
int a,b,x,y;
Boolean flag=true;

public MyCanvas()
{

setSize(500,500);

this.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
System.out.println("\n" + e.getX()+"/"+e.getY());
if(flag)
{
a = e.getX();
b = e.getY();
flag = !flag;
}
else
{
x = e.getX();
y = e.getY();
flag = !flag;
Ve();
}
}
}
);

this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(-1);
}
}
);
}
public void Ve()
{
System.out.printf("ve diem tu (%d,%d) den (%d,%d)",a,b,x,y);
}
public static void main(String args[])
{
new MyCanvas().setVisible(true);
}
}


// ngòai ra còn có các method khác chưa override: mouseExited,mouseReleased,mouseEntered,mousePresse d, cách dùng cũng tương tự

hieugallant_88
25-09-2009, 13:35
cảm ơn các bạn nhiều nha!! để mình về text lại, có j hog hiểu mình sẽ nhờ các bạn tiếp nha!!hihi

hieugallant_88
03-10-2009, 08:34
ok! thanks các bạn nha! mình đã làm được rồi.
Giờ mình muốn vẽ một số hình tròn, xong rồi mình sẽ nối lại bằng 1 đường thẳng. Giống như vẽ một đồ thị vô hướng vậy đó các bạn...vậy mình làm thế nào?? hiii,

tranngoclan1987
04-10-2009, 20:45
ok! thanks các bạn nha! mình đã làm được rồi.
Giờ mình muốn vẽ một số hình tròn, xong rồi mình sẽ nối lại bằng 1 đường thẳng. Giống như vẽ một đồ thị vô hướng vậy đó các bạn...vậy mình làm thế nào?? hiii,

Một cái đồ thị vô hướng thì theo mình bạn nên tổ chức nó thành một cấu trúc dữ liệu, viết theo hướng đối tượng, thế bạn mới có thể quản lý được bạn đã vẽ những hình tròn nào, rồi nối những hình tròn đó bằng những đường thẳng

nhuevp
24-10-2009, 16:18
Làm sao để chỉnh sửa kích thước của hình đã vẽ vậy?
Ví dụ như mình kích chuột vào hình đó và thay đổi độ rộng của nó ấy

[=========> Bổ sung bài viết <=========]

Thấy đứa bạn mình bảo ép hình vào thành ảnh nhưng mình không biết làm như thế nào cả?
Ai biết thì giúp mình với
!

B&W
24-10-2009, 16:32
Làm sao để chỉnh sửa kích thước của hình đã vẽ vậy?
Ví dụ như mình kích chuột vào hình đó và thay đổi độ rộng của nó ấy

[=========> Bổ sung bài viết <=========]

Thấy đứa bạn mình bảo ép hình vào thành ảnh nhưng mình không biết làm như thế nào cả?
Ai biết thì giúp mình với
!
Tốt nhất là tổ chức theo hướng đối tượng, độ rộng là thuộc tính của đối tượng, lúc đó muốn thay đổi thì chỉ việc set lại thuộc tính đó thôi. Muốn kích chuột để chọn hình thì liên quan tới picking, tham khảo chương selection trong cuốn redbook.
Còn ép hình thành ảnh là gì thì....ko biết :D.

star_movie_02
24-12-2009, 11:54
Mình mới học Java nên dở lắm. Mình muốn hỏi có cách nào lấy dữ liệu trong Textfield mà không phải là dạng String. Mình muốn lấy dữ liệu int thì làm sao? Mong được giúp đỡ. Thanks cả nhà!

hayvuilen_762
15-06-2011, 20:49
rất dơn giản.
vd minh có JTextField txta=new JTextField(20);
nếu muốn lấy ra là số nguyên
điều hiển nhiên là bạn phải nhập số vào nha.
sau đó dùng lệnh
int a=Integer.parseInt(txta.getText());