JavaFX TilePane - ลำดับของการวาดลูก

ฉันมี JavaFX 2.2 TilePane ที่มีหลายรายการ (ลูกๆ) ฉันได้เพิ่ม css เพื่อให้เมื่อวางเมาส์ไว้ ขนาดของรายการจะถูกตั้งค่าเป็น 1.2 ตามค่าเริ่มต้น ลำดับของลูกจะกำหนดว่าโหนดใดจะถูกวาดก่อนและสิ่งสุดท้าย มีวิธีที่จะทำให้รายการโฮเวอร์อยู่เหนือรายการอื่นทั้งหมด โดยไม่ต้องหันไปใช้ toFront() และทำให้เป็นรายการสุดท้าย (ย้ายไปยังจุดสิ้นสุด) คำถามนี้คล้ายกับ https://stackoverflow.com/questions/13893514/scaling-children-in-a-flowpane-makes-the-children-clip-eachother (ยังไม่ได้ตอบ)

ภาพหน้าจอของปัญหาอยู่ที่: http://vladeck.files.wordpress.com/2013/03/javafx_tilepane.png?w=640


person vladeck    schedule 29.03.2013    source แหล่งที่มา
comment
มีวิธี (แฮ็คหรือไม่) ในการใช้โค้ดของฉันเองในการดึงคำสั่งย่อยสำหรับการวาดภาพเมื่อ JavaFX ทาสี TilePanel ใหม่หรือไม่   -  person vladeck    schedule 29.03.2013


คำตอบ (1)


วิธีแก้ปัญหา / วิธีแก้ไข

  1. ใช้ GridPane แทน TilePane
  2. เมื่อผู้ใช้คลิกที่รายการในตาราง ให้โทร toFront ในรายการ

โค้ดตัวอย่าง

ฉันเพิ่มโค้ดต่อไปนี้ลงในเครื่องคิดเลข ซึ่งใช้เค้าโครงตารางกริดซึ่งมีลักษณะคล้ายกับ เค้าโครงแบบเรียงต่อกันในภาพหน้าจอตัวอย่างของคุณ ด้วยแอพพลิเคชั่นที่ได้รับการแก้ไข ฉันไม่พบปุ่มเครื่องคิดเลขที่ทับซ้อนกัน แม้จะดูแปลกไปสักหน่อย แต่ปุ่มที่ปรับขนาดได้ทำให้เครื่องคิดเลขใช้งานง่ายขึ้น...

button.setOnMouseEntered(new EventHandler<MouseEvent>() {
  @Override public void handle(MouseEvent mouseEvent) {
    button.toFront();
    button.setScaleX(1.6); button.setScaleY(1.6);
  }
});
button.setOnMouseExited(new EventHandler<MouseEvent>() {
  @Override public void handle(MouseEvent mouseEvent) {
    button.setScaleX(1); button.setScaleY(1);
  }
});

เครื่องคิดเลข image1ภาพเครื่องคิดเลข2


พื้นหลัง

ดังที่คุณทราบ ปัญหาที่ทับซ้อนกันไม่สามารถแก้ไขได้ในบานหน้าต่างสต็อกบางส่วน เช่น TilePane นี่เป็นเพราะว่าลำดับ z และตำแหน่งเค้าโครงสัมพัทธ์ของโหนดนั้นถูกกำหนดโดยตำแหน่งสัมพัทธ์ของโหนดในรายการลูกของ TilePane ในบานหน้าต่างดังกล่าว คุณไม่สามารถเปลี่ยนลำดับ z และนำไปไว้ด้านหน้าได้โดยไม่ต้องย้ายโหนดไปยังตำแหน่งโครงร่างสุดท้ายใน TilePane

A GridPane ไม่ประสบปัญหาเดียวกันกับ TilePane เนื่องจากลำดับรายการโหนดย่อยจะกำหนดลำดับ z ของโหนดย่อยเท่านั้น ไม่ใช่การวางตำแหน่งโครงร่างของโหนดย่อยเหล่านั้น

มีวิธี (แฮ็คหรือไม่) ในการใช้โค้ดของฉันเองในการดึงคำสั่งย่อยสำหรับการวาดภาพเมื่อ JavaFX ทาสี TilePanel ใหม่หรือไม่

ใช่ คุณสามารถแฮ็ก โค้ด TilePane หากคุณมีทักษะ

person jewelsea    schedule 30.03.2013
comment
นี่เป็นหนึ่งในช่วงเวลาเหล่านั้น - ใกล้มากแต่ก็ยังไกลอยู่ :) ขอบคุณ! - person vladeck; 31.03.2013