Tôi đang làm việc với Netbeans IDE trong Java.Làm thế nào để gọi một hàm khi tôi bấm vào một jPanel (Java)?
Tôi có biểu mẫu với một JPanel. Mỗi JPanel có một gridLayout 3x3 và ở mỗi nơi có một hình ảnh đại diện cho một số [0,1,2,3,4,5,6,7,8] (hình ảnh được tạo ra được sử dụng một lớp tùy chỉnh, không chỉ phù hợp hình ảnh trong phòng thí nghiệm).
Tôi muốn có thể trao đổi hai hình ảnh trong bảng điều khiển khi người dùng nhấp vào chúng (Nhấp chuột đầu tiên: không có hành động, nhấp chuột thứ hai: chuyển đổi hai hình ảnh được trang bị trong thành phần jPanel).
Tôi đã tạo một hàm exchangeComponents và với một mã kiểm tra (như:
exchangeComponents (0,8,jPanel1)
nó trao đổi một cách chính xác những hình ảnh nằm trong position1 (hàng 1, cột 1) và trong position2 (hàng 3, cột thứ 3) .
chức năng một creted như sau:
public void exchangeComponents(int component1,int component2,JPanel jpanel){
try{
Component aux1 = jpanel.getComponent(component1);
Point aux1Loc = aux1.getLocation();
Component aux2 = jpanel.getComponent(component2);
Point aux2Loc = aux2.getLocation();
aux1.setLocation(aux2Loc);
aux2.setLocation(aux1Loc);
}
catch (java.lang.ArrayIndexOutOfBoundsException ex){ /* error! bad input to the function*/
System.exit(1);
}
}
tôi cho rằng tôi neeed để có một sự kiện gọi exchangeComponents function() khi c dùng liếm trên một trong những hình ảnh trên jPanel1 nhưng làm thế nào tôi nên làm điều đó? và cách kiểm tra thành phần (hình ảnh) nào người dùng đã chọn? Tôi chỉ biết rằng khi tôi tạo ra một nút nếu một nhấp chuột vào nó (từ IDE) một sự kiện như
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
// some code..
}
được tạo ra và mã tôi điền vào được thực thi.
Cảm ơn bạn trước vì bất kỳ gợi ý nào.
Cảm ơn bạn. Nó rất rõ ràng .. nhưng với img1.addMouseListener (điều này); Tôi vượt qua hình thức itselft và nó nói "Lỗi: MouseListener dự kiến". Vậy cái gì? – dragonmnl
tốt, tôi đã làm nó (thực hiện một lớp getComponent thực hiện MouseListener) và sử dụng img1.addMouseListener (new ComponentListener()). Vấn đề bây giờ là .. Tôi đã thêm người nghe cho mỗi thành phần nhưng khi tôi nhấp vào bất kỳ thành phần nào (Hình ảnh) sự kiện không được kích hoạt ở tất cả – dragonmnl
Xin lỗi, tôi không nghĩ rằng tôi đã làm rõ điều đó, nhưng lớp học của bạn cần thực hiện MouseListener, sau đó bạn cần phải thêm người nghe vào từng thành phần của bạn đang được chuyển xung quanh. @dragonml – DankMemes