Mình muốn làm một giao diện trong java có thể thêm một dòng thông tin khi nhấn vào nút “thêm dòng”.
Mình ảnh mình đã mô tả chi tiết, mình cần tìm hiểu gì về vấn đề này?
Cảm ơn cả nhà nhiều!
Giao diện có thể thay đổi trong java
Chắc là bạn sử dụng jTable
thôi
BoxLayout
có thể làm điều này dễ dàng.
Tạo ra một lớp thành phần (components) mẫu, kế thừa từ JPanel chẳng hạn, chứa các thành phần chung: biểu tượng, tên thành viên, trạng thái như bạn muốn. Sau đó chỉ cần thêm nó vào thành phần được gán bố cục BoxLayout (theo chiều trên xuống: PAGE_AXIS).
Bạn ơi chỉ mình chi tiết thêm được không?
Mình cần đọc tài liệu gì?
Cảm ơn @SITUVN.gcd mình đã dùng thành công với phần hiển thị thêm dòng.
Nhưng giờ thêm một vấn đề nữa:
- khi thêm thì nó thêm từ dưới lên không phải từ trên xuống
- Thêm đến khi đầy của sổ thì không có thanh cuốn để cuốn xuống
Bạn có thể sử dụng jTable
, mỗi cell của table sẽ là 1 jPanel xong bạn thích setuo thế nào thì làm
Tiếc là mình chỉ biết làm trên winform
Chính liên kết mình đưa, ở đoạn dưới có hướng dẫn cách canh chỉnh lại việc canh lề
: Fixing Alignment Problems
Có 2 cách:
-
Gọi
setAlignmentY(Component.TOP_ALIGNMENT)
ở mỗi thành phần được thêm vàoBoxLayout
. -
Ghi đè
getAlignmentY()
để trả vềComponent.TOP_ALIGNMENT
cho lớp mẫu.
Thanh cuộn thì bạn thêm JScrollPane
Vd:
JFrame f = ...
JPanel members = ...
JScrollPane mems = new JScrollPane(members);
f.add(mems); // thay cho f.add(members)
Ngoài ra, theo ý tưởng của @anon12276517, bạn có thể sử dụng JList cùng với cách thức tùy chỉnh cho từng mục: Custom JList Renderer tương tự với JTable.
Mình đã làm được cảm ơn tất cả các bae đã giúp đỡ:
Mình tổng hợp lại để cho bạn sau có tìm thì đễ thấy hơn:
- Tạo một JPanel cha có Layout là BoxLayout như @SITUVN.gcd có nói.
- Tạo các JPanel thành phần muốn thêm vào JPanel cha, trong này phải setMax…size(),setMinium…size,setPre…size() thì nó mới hiển thị từ trên xuống.( Các panel con này implements ActionListener để chuyển tất sự kiện sang lớp cha. Cái này mình tìm hiểu thấy có nên làm cho dễ. Có cả kiểu dùng static cha nữa truyền vào thằng con). Từ đây từ panel cha có thể thao tác được qua thằng con.
- Nhưng còn một vấn đề là làm sao để xác định được hiện tại JFrame đang chứa JPanel nào. Do mình dùng cách thay JPanel thích hợp vào JFrame, đến lúc thoát thì đúng JPanel thì mới được cho tắt JFrame.
Cám ơn bae nhiều