รู้เบื้องต้นเกี่ยวกับ Javafx
เมื่อเราพูดถึงห้องสมุดอินเทอร์เฟซกราฟิกของ Java เรามักจะได้ยินการแกว่งหรือ AWT ที่เก่ากว่ารวมถึงหนังสือสองเล่มที่แนะนำในหนังสือหลายเล่ม โรงเรียนและชั้นเรียนฝึกอบรมหลายแห่งยังสอนเทคโนโลยีทั้งสองนี้ แต่ในความเป็นจริงเทคโนโลยีทั้งสองได้ล้าสมัยมาเป็นเวลานาน แม้ว่ามันจะไม่ยากที่จะเรียนรู้การแกว่ง แต่จริงๆแล้วมันยากมากที่จะเขียนอินเทอร์เฟซโดยใช้มัน เนื่องจากอินเทอร์เฟซและรหัสไม่ได้แยกออกรหัสจะต้องเต็มไปด้วยพิกัดจำนวนมากเมื่อเขียนและมันยากมากที่จะแก้ไข สิ่งที่ดีที่สุดในเรื่องนี้คือ WPF ของ Microsoft และฉันสามารถพูดได้ว่าใครสามารถใช้มันได้และใครจะรู้
แน่นอนแม้ว่าการเขียนโปรแกรมกราฟิกของลูกค้าเป็นจุดอ่อนของ Java แต่ Java ยังไม่ยอมแพ้ต่อความพยายามนี้ Javafx แนะนำในวันนี้เป็นเทคโนโลยีล่าสุดสำหรับ Java ในการเขียนโปรแกรมอินเตอร์เฟสกราฟิก หากคุณวางแผนที่จะเขียนโปรแกรมอินเทอร์เฟซกราฟิกใน Java โดยไม่มีภาระทางประวัติศาสตร์ขอแนะนำให้ใช้ Javafx
นี่คือทรัพยากรและเอกสารเกี่ยวกับ Javafx บนเว็บไซต์ทางการของ Oracle
นี่คือโปรแกรมตัวอย่างอย่างเป็นทางการเราสามารถอ้างถึงส่วน Javafx เพื่อเรียนรู้วิธีการใช้งาน ด้านล่างเป็นหนึ่งในโปรแกรม Javafx เศษส่วน การคลิกที่ตัวเลขด้านบนสามารถป้อนจอแสดงผลด้วยกล้องจุลทรรศน์ที่แตกต่างกัน รู้สึกเหมือนได้ดูโลกของไวรัสด้วยกล้องจุลทรรศน์ซึ่งน่าตกใจมาก
วิธีการติดตั้ง
ตราบใดที่คุณติดตั้ง JDK 8 เวอร์ชันล่าสุดคุณสามารถใช้ไลบรารี Javafx ได้ หากไม่ได้ติดตั้งให้เริ่มติดตั้งอย่างรวดเร็ว
เริ่มต้นอย่างรวดเร็ว
โปรแกรมแรก
สร้างโครงการใหม่จากนั้นเขียนคลาสต่อไปนี้จากนั้นรวบรวมและเรียกใช้เพื่อดูผลลัพธ์ ไม่จำเป็นต้องอธิบายโปรแกรมนี้ หากคุณมีประสบการณ์ในการเรียนรู้การแกว่งและเฟรมเวิร์กกราฟิกอื่น ๆ มันควรจะเข้าใจรหัสนี้ได้ง่ายมาก แน่นอนเนื่องจาก Javafx เป็นสิ่งใหม่ฉันจึงใช้คุณสมบัติใหม่ของ Java 8 - Lambda Expressions
แพ็คเกจ yitian.javafxsample; นำเข้า javafx.application.application; นำเข้า Javafx.scene.scene; นำเข้า Javafx.scene.control.button; นำเข้า Javafx.scene.layout.stackpane; นำเข้า Javafx.stage.stage; btn = ปุ่มใหม่ (); btn.settext ("สวัสดี, โลก"); btn.setonaction (เหตุการณ์ -> {system.out.println ("สวัสดีโลก!");}); stackpane root = stackpane ใหม่ () World! "); PrimentStage.setscene (ฉาก); PrimentStage.show ();} โมฆะคงที่สาธารณะ (สตริง [] args) {liaming (args);}}ภาพหน้าจอที่วิ่งมีดังนี้
อินพุตผู้ใช้
โปรแกรมนี้สามารถใช้เพื่อจัดการสถานการณ์การเข้าสู่ระบบของผู้ใช้ รหัสมีดังนี้และส่วนสำคัญได้รับการแสดงความคิดเห็น ส่วนสุดท้ายของรหัสใช้ฟังก์ชัน setOnAction เพื่อเพิ่มเหตุการณ์คลิกลงในปุ่มและข้อความจะปรากฏขึ้นเมื่อคลิกปุ่ม
ผู้ใช้ระดับสาธารณะขยายแอปพลิเคชัน {@Override โมฆะสาธารณะเริ่มต้น (ขั้นตอน primarystage) โยนข้อยกเว้น {// layout grid gridpane กริด = new gridpane (); grid.setalignment (pos.center); 25, 25, 25)); // ฉากฉากฉากใหม่ = ฉากใหม่ (กริด, 300, 275); PrimentStage.setscene (ฉาก); // เพิ่มฉาก TitleText = ข้อความใหม่ ("ยินดีต้อนรับ"); scenetitle.setFont (font.font ("tahoma", fontweight.normal, 20); แท็กและกล่องข้อความชื่อผู้ใช้ = ฉลากใหม่ ("ชื่อผู้ใช้:"); grid.add (ชื่อผู้ใช้, 0, 1); textfield usertextfield = New TextField (); grid.add (usertextfield, 1, 1); // เพิ่มแท็กและกล่องรหัสผ่าน PasswordField (); grid.add (pwbox, 1, 2); // เพิ่มปุ่มส่งปุ่ม BTN = ปุ่มใหม่ ("เข้าสู่ระบบ"); HBOX HBBTN = ใหม่ HBOX (10); HBBTN.SetAlignment (pos.bottom_right); ActionTarget = text ใหม่ (); grid.add (ActionTarget, 1, 6); btn.setonaction (เหตุการณ์ -> {actiontarget.setfill (color.firebrick); actiontarget.settext ("เข้าสู่ระบบ");}); primarystage.settitle {Launch (args);}}ภาพหน้าจอของโปรแกรมที่ทำงานมีดังนี้
โปรแกรมนี้ไม่ใช่เรื่องยากมันใช้เค้าโครงกริดแล้วเพิ่มแต่ละองค์ประกอบลงในกริด สำหรับความหมายของแอตทริบิวต์ของเค้าโครงกริดโปรดดูตัวเลขอย่างเป็นทางการ
การออกแบบส่วนต่อประสานผู้ใช้ด้วย FXML
เฟรมเวิร์กอินเตอร์เฟสกราฟิกที่ทันสมัยรองรับการแยกอินเทอร์เฟซและรหัสและภาษาเชิงพรรณนาที่ใช้กันทั่วไปคือ XML เช่น QML สำหรับ QT และ XAML สำหรับ WPF แน่นอน Javafx ยังมีภาษาที่คล้ายกันที่เรียกว่า FXML หากคุณต้องการทราบรายละเอียด FXML คุณสามารถอ้างถึงบทความบทนำถึง FXML บนเว็บไซต์ทางการของ Oracle
มาเขียนตัวอย่างเล็ก ๆ ข้างต้นใน FXML ใหม่และแต่ละส่วนจะแสดงความคิดเห็น หากคุณได้เรียนรู้ภาษาเชิงพรรณนาที่คล้ายกันอื่น ๆ คุณจะพบว่าสิ่งเหล่านี้คล้ายกันจริง ๆ สิ่งเดียวที่ควรทราบคือแอตทริบิวต์ FX: คอนโทรลเลอร์ในเลย์เอาต์ซึ่งระบุตัวควบคุมและฟังก์ชั่นของคอนโทรลเลอร์คือการเขียนรหัสที่สอดคล้องกันของอินเตอร์เฟส
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <!-ชั้นนำนำเข้า-> <? นำเข้า Javafx.geometry.insets?> <? นำเข้า Javafx.scene.control.*?> <? นำเข้า Javafx.scene.layout*?> < javafx.scene.text.text?> <!-ตั้งเค้าโครง-> <gridpane xmlns = "http://javafx.com/javafx" xmlns: fx = "http://javafx.com/fxml prefwidth = "600.0" การจัดตำแหน่ง = "center" hgap = "10" vgap = "10"> <padding> <insets top = "25" ขวา = "25" ด้านล่าง = "10" ซ้าย = "25"/> </padding> <! gridpane.columnspan = "2"> <font> <font name = "consolas" size = "20"/> </font> </text> <label text = "ชื่อผู้ใช้:" gridpane.columnindex = "0" gridpane.rowindex = "1"/> text = "รหัสผ่าน:" gridpane.columnindex = "0" gridpane.rowindex = "2"/> <passwordfield fx: id = "passwordfield" gridpane.columnindex = "1" gridpane.rowindex = "2"/> <! gridPane.RowIndex = "4"> <button text = "แสดงรหัสผ่าน" onaction = "#showpasswordbutton"/> </hbox> <text fx: id = "Hinttext" gridpane.columnindex = "0" gridpane.columnspan = "2" Gridpane.halignment =
ด้านล่างนี้เป็นคอนโทรลเลอร์ที่สอดคล้องกับไฟล์ FXML นี้ซึ่งเป็นคลาส Java มาตรฐาน ID ที่ระบุโดยแอตทริบิวต์ FX: ID ใน FXML สามารถประกาศเป็นฟิลด์คลาสในคอนโทรลเลอร์ซึ่งคุณสามารถโต้ตอบกับส่วนประกอบอินเตอร์เฟส ในทำนองเดียวกันตัวจัดการเหตุการณ์ที่ประกาศโดย OnAction เป็นวิธีการในคอนโทรลเลอร์ โปรดทราบว่าฟิลด์และวิธีการเหล่านี้จำเป็นต้องมีคำอธิบายประกอบโดยใช้คำอธิบายประกอบ @FXML
นำเข้า Javafx.event.actionEvent; นำเข้า Javafx.fxml.fxml; นำเข้า Javafx.scene.control.passwordfield; นำเข้า Javafx.scene.text.Text; ตัวควบคุมคลาสสาธารณะ {@fxml ข้อความส่วนตัว {hinttext.settext ("แสดงรหัสผ่าน:" + passwordfield.getText ());}}สิ่งสุดท้ายที่จะแก้ไขคือโปรแกรมหลัก ในโปรแกรมหลักคุณต้องใช้ fxmlloader เพื่อโหลดทรัพยากร FXML และส่วนอื่น ๆ ไม่ได้เปลี่ยนแปลงมากนัก
คลาสสาธารณะ usefxml ขยายแอปพลิเคชัน {@Override โมฆะสาธารณะเริ่มต้น (ระยะ primarystage) โยนข้อยกเว้น {parent root = fxmlloader.load (getClass (). getResource ("ui.fxml")) ฉากฉาก = ฉากใหม่ (รูท, 300, 275); fxml "); primarystage.setscene (ฉาก); primarystage.show ();} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {liking (args);}}}ภาพหน้าจอของโปรแกรมที่ทำงานมีดังนี้
หากคุณต้องการปรับเปลี่ยนสไตล์ส่วนประกอบ Javafx จะให้อินเทอร์เฟซ CSS ช่วยให้เราสามารถปรับเปลี่ยนสไตล์โดยตรงโดยใช้ไฟล์ CSS ก่อนอื่นคุณต้องเพิ่มการอ้างอิงไปยังสไตล์ชีทที่เกี่ยวข้องในไฟล์ FXML @ ด้านหน้าของชื่อไฟล์หมายความว่าไฟล์ CSS และไฟล์ FXML อยู่ในไดเรกทอรีเดียวกัน
<gridpane> <Stylesheets> <url value = "@style.css"/> </tylesheets> <gridpane/>
แผ่นสไตล์มีความคล้ายคลึงกับแผ่นสไตล์ธรรมดายกเว้นว่าจำเป็นต้องใช้คำนำหน้าเฉพาะ Javafx
#BTNSHOWPassword {-fx-background-color: deeppink;}ตัวเลือก ID ถูกใช้ด้านบนดังนั้นคุณลักษณะ ID จึงจำเป็นต้องใช้ใน FXML
<button id = "btnshowpassword" text = "showpassword" onaction = "#showpasswordbutton"/>
โปรแกรมหลังจากการปรับแต่งจะแสดงในรูป ฉันเพียงแค่ปรับเปลี่ยนสีพื้นหลังของปุ่มเท่านั้น ในความเป็นจริงมีหลายสไตล์ที่สามารถเปลี่ยนแปลงได้รวมถึงพื้นหลังของโปรแกรม ฯลฯ นักเรียนที่สนใจสามารถลองได้ด้วยตนเอง
สรุป
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้เกี่ยวกับความเข้าใจเบื้องต้นของ Javafx หากนักเรียนคนใดต้องการใช้ Java เพื่อเขียนโปรแกรมอินเตอร์เฟสกราฟิกคุณสามารถพิจารณาใช้ Javafx ซึ่งเป็นตัวเลือกที่ดีมาก หวังว่ามันจะเป็นประโยชน์กับทุกคน หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!