Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Chào anh (chị), các bạn trong Group, em có 1 câu hỏi cần sự giúp đỡ của các anh chị. Em có 1 Class như thế này:
public class Data {
private String TenCongViec;
private double ThoiGianXuLy, ThoiGianDen;
public Data(){
TenCongViec = "";
ThoiGianXuLy = 0;
ThoiGianDen = 0;
}
public Data(String tencongviec, double thoigianxuly, double thoigianden){
TenCongViec = tencongviec;
ThoiGianXuLy = thoigianxuly;
ThoiGianDen = thoigianden;
}
}
Trên hình thì em có 1 table java, khi em lấy dữ liệu ra bằng cách
getvalue để chuyển sang Double thì em cần phải ép kiểu lại là (String) mới chuyển dc
- Vậy làm sao để kiểu dữ liệu mình lấy ra từ table luôn là string mà ko cần ép kiểu ạ? Hiện em không biết kiểu dư liệu của nó là gì?. Em đã thử set lại kiểu dữ liệu là String như trong hình 2 nhưng không dc ạ?
- Khi em Nhập dữ liệu vào 1 dòng trong table nhưng Con trỏ vẫn còn trong ô cuối em ấn button Run thì phát sinh lỗi, vậy em có thể làm cách nào để khi nhập dữ liệu xong khi ấn button Run thì không lỗi ạ, Em thử dùng hàm di dời con trỏ vào 1 ô textbox khác nhưng vẫn ko dc ạ. em đã tìm trong nhiều giờ nhưng không biết cách khắc phục mong anh chị có thể giải đáp giúp em.
Em cảm ơn ạ!
Đầu tiên cho anh hỏi em đang sử dụng loại Table nào để show dữ liệu ra Table
Trong Swing thường dùng DafaultTableModel và AbstractTableModel
Answer for question 1 : Khi ta dùng table thường là một bảng danh sách các dữ liệu được show ra từ file hoặc từ database ... Thì những gì mình đang nhìn thấy trên table đó được gọi là VIEW (hình thức bên ngoài) VD: Mình click vào cột cho nó sắp xếp lại thì nó sắp lộn xộn sao kệ nó còn bản chất dữ liệu của nó vẫn là MODEL (database || file)
Và view để hiển thị được thì thực chất là là một hình ảnh từ cái dữ liệu trong database đó chữ ko có kiểu dữ liệu gì cả, nên khi muốn lấy giá trị từ một ô, cột trong table ta phải dùng toString => String => Ép qua kiểu cần lấy // Đây là điều bắt buộc.
Answer for question 2: Khi em nhập dữ liệu trực tiếp và một cell trên table thì như đã nói ở trên nó chỉ là cái view cho mình nhìn thấy bên ngoài vậy thôi, còn nếu muốn xử lý từ dữ liệu đó thì sau khi nhập sau mình phải sử lý event cho nó. Có thể dùng mousePressed() hoặc KeyRealse(Key Enter) mỗi lần nhập xong thì nhấn enter => fireTableDataChaged() để cập nhật lại dữ liệu trong bảng hiện tại xong rồi Nhấn Button Run để xí lý. Điều này là tất nhiên rồi. VD trong excel cũng vậy thôi. Mình đang nhập, con trỏ chuột đang nháy mà mình muốn xử lý giá trị cho nó thì chắc chắn ko được rồi. Phải nhập hoàn tất mới xử lý được.
use toString() to convert data type
1. Không thể nhé bạn. theo mình là vậy
2. Cái này là do nó chưa có lostfocus -> nó chưa cập nhật dữ liệu. Bạn có thể thử event ValueChanged nếu có
https://drive.google.com/file/d/0B4A7s6CanXhpTHlTek96ci1jOG8/view?usp=sharing https://drive.google.com/file/d/0B4A7s6CanXhpQWpLM1VKRkZuN2s/view?usp=sharing
link 2 hình đây ạ