JavaFX TilePane - ลำดับของการวาดลูก
บ้าน
คำถามและคำตอบ
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
แหล่งที่มา
คำตอบ (1)
วิธีแก้ปัญหา / วิธีแก้ไข
ใช้ GridPane แทน TilePane
เมื่อผู้ใช้คลิกที่รายการในตาราง ให้โทร 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);
}
});
พื้นหลัง
ดังที่คุณทราบ ปัญหาที่ทับซ้อนกันไม่สามารถแก้ไขได้ในบานหน้าต่างสต็อกบางส่วน เช่น TilePane
นี่เป็นเพราะว่าลำดับ z และตำแหน่งเค้าโครงสัมพัทธ์ของโหนดนั้นถูกกำหนดโดยตำแหน่งสัมพัทธ์ของโหนดในรายการลูกของ TilePane ในบานหน้าต่างดังกล่าว คุณไม่สามารถเปลี่ยนลำดับ z และนำไปไว้ด้านหน้าได้โดยไม่ต้องย้ายโหนดไปยังตำแหน่งโครงร่างสุดท้ายใน TilePane
A GridPane
ไม่ประสบปัญหาเดียวกันกับ TilePane
เนื่องจากลำดับรายการโหนดย่อยจะกำหนดลำดับ z ของโหนดย่อยเท่านั้น ไม่ใช่การวางตำแหน่งโครงร่างของโหนดย่อยเหล่านั้น
มีวิธี (แฮ็คหรือไม่) ในการใช้โค้ดของฉันเองในการดึงคำสั่งย่อยสำหรับการวาดภาพเมื่อ JavaFX ทาสี TilePanel ใหม่หรือไม่
ใช่ คุณสามารถแฮ็ก โค้ด TilePane หากคุณมีทักษะ
person
jewelsea
schedule
30.03.2013