2010-10-29 8 views
7

Tôi muốn sử dụng một cây trong ứng dụng Scala swing của tôi, nhưng thành phần không có sẵn trong API.Cây trong scala swing

Trình bao bọc JTree có tồn tại không?

Nếu không, bạn có lời khuyên nào để thực hiện không?

Cảm ơn

Trả lời

9

Mặc dù bạn có thể sử dụng trực tiếp Java JTree trong chương trình scala của bạn, như minh họa bởi this thread, có một cuộc tranh luận về bao gồm một wrapper Scala của một JTree.

Các tập quán phổ biến sau đây là tẻ nhạt, dài dòng, an toàn không loại, và/hoặc yêu cầu an toàn sử dụng null:

  • Tạo một mô hình cây tùy chỉnh, được hỗ trợ bởi các đối tượng người dùng riêng của bạn - Scala Swing cách sẽ có một typesafe chuẩn Map đằng sau nó
  • sự kiện - có đống các sự kiện tạo ra bởi cây - TreeWillExpandListeners, TreeSelection, vv - Sử dụng lò phản ứng/Nhà xuất bản PartialFunction mô hình sẽ làm cho mã này xa dễ đọc hơn và ngắn gọn.
  • Các thành phần có thể chỉnh sửa - Điều này được thực hiện với các giá trị tiềm ẩn ở nơi khác trong scala.swing và cũng phải ở đây.
  • Trình kết xuất tùy chỉnh - Không thể nhớ cách Scala xử lý các vấn đề này, nhưng điều này luôn khó sử dụng trong Java Swing.

Tóm lại, JTrees là một nỗi đau lớn để sử dụng trong Java, không có lý do đặc biệt tốt. Một wrapper Scala sẽ là một lợi ích lớn cho người dùng Scala Swing.

A design is in progressJTree wrapper proposal is available in this GitHub repo, được tạo bởi kenbot (Ken Scambler).