2015-05-05 17 views
8

Tôi cần có trình xử lý lựa chọn và chọn phương pháp trên ngăn để có thể giám sát và trình bày đánh dấu khi nút được nhấp vào.Thêm thành phần tùy chỉnh vào SceneBuilder 2.0

tôi đã làm như sau:

public class PaneWithSelectionListener extends Pane { 

private ObjectProperty<Annotation> selectedAnnotation = new SimpleObjectProperty<>(); 

public PaneWithSelectionListener() { 
    super(); 
    selectedAnnotation.addListener((obs, oldAnno, newAnno) -> { 
     if (oldAnno != null) { 
      oldAnno.setStyle(""); 
     } 
     if (newAnno != null) { 
      newAnno.setStyle("-fx-border-color: blue;-fx-border-insets: 5;-fx-border-width: 1;-fx-border-style: dashed;"); 
     } 
    }); 

    setOnMouseClicked(e->selectAnnotation(null)); 
} 

public void selectAnnotation(Annotation ann){ 
    selectedAnnotation.set(ann); 
} 

}

Và điều này làm việc tuyệt vời - tuy nhiên tôi không thể làm việc với SceneBuilder nữa kể từ khi tài liệu tham khảo FXML tôi PaneWithSelectionListener này chứ không phải là Pane. Tôi không chắc chắn làm thế nào để có được khung tùy chỉnh của tôi vào SceneBuilder. Tôi đã xem xét các câu hỏi khác và tất cả chúng đều là sự kết hợp của FXML và Bộ điều khiển - nơi đây chỉ là một Pane.

Có ai biết cách thực hiện việc này hay có thể hoán đổi Pane cho PaneWithSelectionListener lúc khởi tạo không?

Cảm ơn

+0

Bạn chỉ cần lựa chọn duy nhất? –

+0

Có - Lựa chọn duy nhất là tất cả những gì tôi cần. Tôi đại diện cho chú thích trên đầu trang của một hình ảnh. Nếu người dùng nhấp vào một - nó sẽ chọn. Tôi không nghĩ rằng họ cần nhiều lựa chọn. Chỉ là một chỉ báo mà một trong những sẽ bị ảnh hưởng. Cảm ơn. –

Trả lời

11

Nếu vấn đề chỉ là để làm cho lớp tùy chỉnh của bạn có sẵn trong SceneBuilder, bạn có thể làm như vậy với các bước sau:

  1. Bundle lớp tùy chỉnh của bạn (và bất kỳ lớp học hỗ trợ, chẳng hạn như Annotation) như là một tập tin jar
  2. trong SceneBuilder, kích hoạt nút thả xuống bên cạnh "thư viện" ở phía trên cùng của cửa sổ bên trái: enter image description here
  3. Chọn "Import JAR/FXML Fil e ..."
  4. Chọn file Jar tạo từ bước 1
  5. Hãy chắc chắn rằng các lớp học mà bạn cần truy cập vào trong SceneBuilder (PaneWithSelectionListener) được kiểm tra
  6. Nhấn "Import Component"
  7. PaneWithSelectionListener bây giờ sẽ xuất hiện trong SceneBuilder dưới "Custom" trong khung bên trái: enter image description here

bạn sẽ nhận thấy trình đơn thả xuống ở SceneBuilder có một lựa chọn "Custom Library folder", từ đó bạn có thể mở thư mục nơi các tập tin jar được lưu trữ . Để có tùy chọn nhanh, bạn chỉ có thể sao chép các tệp jar vào thư mục này và (sau một thời gian trễ ngắn), các lớp được chứa sẽ xuất hiện trong danh sách "Tùy chỉnh".

+1

Tôi đã thử điều đó ngày hôm qua, tuy nhiên khi tôi cố gắng tải nó, lựa chọn là trống. –

+0

Ok điều này thật kỳ lạ. Tôi đã chuyển thành phần của mình vào một gói khác và xuất khẩu jar và nó hoạt động. –

+0

Nếu bạn đã có nó trong gói mặc định, tôi nghĩ rằng làm cho nó không thành công (FXML nói chung không chơi độc đáo với gói mặc định, mặc dù mất mát duy nhất có cho mã kiểm tra rất nhanh anyway). –

Các vấn đề liên quan