Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Lỗi Nhập Liệu trong table của Java swing

07:31 20-04-2017 2.866 lượt xem 6 bình luận 08:32 21-04-2017

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

  1. 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 ạ?
  2. 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 ạ!

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 08:32 21-04-2017

Đầ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.

evil.tn9x đã bình luận 10:51 20-04-2017

use toString() to convert data type

K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 08:02 20-04-2017

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ó

Câu hỏi mới nhất