เฟรมเวิร์ก Java GUI จะเลือกอะไรดี? สวิง, SWT, AWT, SwingX, JGoodies, JavaFX, Apache Pivot? [ปิด]


228

มีกรอบ gui ค่อนข้างมากสำหรับ Java แต่สิ่งที่ได้รับการยอมรับว่าเป็นกรอบทางเลือกของวันนี้

ต่อไปนี้เป็นความเข้าใจของฉันเกี่ยวกับกรอบงานที่แตกต่างกันโปรดแก้ไขฉันหากฉันผิด นี่เป็นชุดคำถามที่กำหนดไว้อย่างหลวม ๆ แต่ฉันก็ยังคิดว่ามันมีค่าสำหรับทุกคนที่คิดว่าจะสร้างแอปพลิเคชั่น gui ที่หลากหลาย


AWT

เป็นรากฐานของการแกว่งมากมันทำงานได้ดี แต่ขาดองค์ประกอบขั้นสูง หากคุณต้องการสร้างแอปพลิเคชั่นที่หลากหลาย AWT อาจไม่ใช่วิธีที่จะไป อย่างไรก็ตามสำหรับแอปพลิเคชั่น gui ขนาดเล็กที่ไม่ต้องการส่วนต่อประสานผู้ใช้ที่หลากหลาย สิ่งนี้อาจเหมาะสมอย่างสมบูรณ์แบบเพราะมันเป็นกรอบการทดลองและพิสูจน์แล้ว


แกว่ง

อ้างอิงจาก AWT ตามที่ระบุไว้ก่อนหน้า ในวัยเด็กมันถูกมองว่าช้าและบั๊กกี้และทำให้ IBM สร้าง SWT สำหรับ Eclipse อย่างไรก็ตามด้วย Java 5 (หรือ 6?) Swing กลายเป็นเฟรมเวิร์กของทางเลือกสำหรับการสร้างแอปพลิเคชันใหม่ Swing มีส่วนประกอบมากมาย แต่ยังขาดในบางพื้นที่ ตัวอย่างหนึ่งที่ไม่มีส่วนประกอบแบบ TreeTable ที่โดดเด่นซึ่งสามารถทำการเรียงลำดับและกรอง / ค้นหา


SWT

สร้างโดย IBM สำหรับ Eclipse พวกเขาคิดว่า Swing ไม่เหมาะกับ Eclipse ในขณะนั้น โดยตัวของมันเองค่อนข้างต่ำและใช้วิดเจ็ตดั้งเดิมของแพลตฟอร์มผ่าน JNI ไม่เกี่ยวข้องกับ Swing และ AWT เลย API ของพวกเขาค่อนข้างคึกคักและไม่ง่าย พวกเขามีองค์ประกอบขั้นสูงบางอย่างเช่น TreeTable (แต่ฉันไม่คิดว่าพวกเขาสนับสนุนการเรียงลำดับและกรองออกจากกล่อง) SWT ใช้การผูกพื้นเมือง (ผ่าน JNI?) และการพูดจาโผงผางบนอินเทอร์เน็ตคือเฟรมเวิร์กนี้ไม่ควรใช้ในโครงการของวันนี้ (ทำไมจะไม่ล่ะ?)


SwingX

ขึ้นอยู่กับการสวิงและภารกิจคือการสร้างองค์ประกอบที่หลากหลายสำหรับการแกว่ง ยังอยู่ระหว่างการพัฒนา (ไม่แอ็คทีฟมาก ๆ ) มีชุดของคอมโพเนนต์ที่ดีมากเช่น TreeTable แต่ TreeTable ไม่รองรับการกรองและการเรียงลำดับเท่าที่ฉันรู้ อย่างไรก็ตามสนับสนุนการค้นหาด้วยการไฮไลต์

โปรดทราบว่า SwingX เป็นส่วนประกอบ (AFAIU) ที่เป็นส่วนขยายหรือองค์ประกอบขององค์ประกอบสวิงที่มีอยู่


JGoodies

กรอบที่ฉันไม่รู้อะไรเลย ... จุดแข็งและจุดอ่อนของมันคืออะไร? Jgoodies ของชุดอะไรนอกเหนือจากส่วนที่เหลือ?

JGoodies OTOH เป็นเรื่องเกี่ยวกับ PLAF และเลย์เอาต์


JavaFX

เรือธงล่าสุดของ Java / Oracle สัญญาว่าจะเป็นมาตรฐานในการพัฒนาเดสก์ท็อปหรือเว็บแอปพลิเคชั่นที่หลากหลาย


Apache Pivot

มันแสดงผล UI โดยใช้ Java2D จึงลดผลกระทบของมรดก (IMO, bloated) ของ Swing และ AWT (@Augustus Thoo)

มันเป็นจุดสนใจหลักที่ดูเหมือนว่าจะใช้กับ RIA (แอปพลิเคชันอินเทอร์เน็ตที่สมบูรณ์) แต่ดูเหมือนว่ามันจะสามารถนำไปใช้กับแอปพลิเคชันเดสก์ท็อปได้ และเป็นความคิดเห็นส่วนตัวดูน่าสนใจมาก! ฉันชอบเป็นพิเศษมันเป็นโครงการอาปาเช่

https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html


Qt Jambi

java wrapper ไปยังไลบรารี qt ดั้งเดิมซึ่งเขียนด้วย c / c ++ มีประสิทธิภาพมากใช้อย่างกว้างขวางและเป็นที่ยอมรับ มีส่วนประกอบ GUI จำนวนมากและ API ที่ใช้งานง่าย

http://qt-jambi.org/


ดังนั้นเพื่อพยายามสรุปสิ่งที่ฉันถาม:

สมมติว่าฉันต้องการสร้างแอปพลิเคชันเดสก์ท็อปในวันนี้ที่ Java ซึ่งมีส่วนประกอบขั้นสูงมากมายฉันควรเลือกอะไร และทำไม?

กรอบใดในกรอบเหล่านี้ที่ควรรับรู้ว่าเลิกใช้แล้วและควรรับรู้เป็นกรอบแห่งอนาคตอันไกลโพ้น

กรอบมาตรฐาน deo พฤตินัยในปัจจุบันคืออะไรและเครื่องมือใดที่คุณใช้ในการสร้างแอปพลิเคชัน java gui?


ฉันอาจเสียใจที่ขอสิ่งนี้ แต่ไม่ลองเลย:

C # /. Net ได้รับการกล่าวถึงว่ามีชุดส่วนประกอบที่ใช้งานง่ายซึ่งสามารถยืดหยุ่นได้ในทุกทิศทางที่เป็นไปได้ และหลังจากการตรวจสอบจาวาเฟรมเวิร์กที่แตกต่างกันในระดับหนึ่งฉันไม่สามารถพูดได้เหมือนกันเกี่ยวกับ Java ทำไมนี้ ทำไมจาวา (ซึ่งเป็นภาษาการเขียนโปรแกรมที่ใช้กันอย่างแพร่หลายที่สุดในโลก) ไม่ได้มีชุด GUI เหมือนกัน?

มันเป็นเพียงแค่ java ที่ใช้องค์ประกอบ gui ของพวกเขาในระดับที่ต่ำกว่ามากและเป็นไปได้ที่จะเขียนส่วนประกอบขั้นสูงเหล่านี้ทั้งหมดที่ฉันกำลังมองหา แต่คุณต้องทำมากถ้าไม่ได้ทั้งหมดด้วยตัวเอง?


ฉันไม่ทราบว่า SWT นั้น "อิงจากการผสมผสานระหว่าง AWT และ Swing" เป็นเช่นนั้นจริงหรือ ฉันคิดว่ามันบริสุทธิ์ JNI ที่จะเรียกใช้ระบบหน้าต่างของระบบปฏิบัติการ ...
ริช

@ อุดมไปด้วยมันถูกกล่าวว่าในหนึ่งในความคิดเห็นคำตอบ ฉันแค่คิดว่าพวกเขารู้ว่าพวกเขากำลังพูดถึงอะไร
netbrain

4
ฉันคิดว่าคุณสับสน "UI Toolkit" และ "GUI framework" AWT, Swing และ SWT เป็นชุดเครื่องมือ UI แต่แน่นอนว่าฉันจะไม่เรียกมันว่า "frameworks" เฟรมเวิร์กอิงตามชุดเครื่องมือ UI ที่กำหนดและจัดหากาวเพื่อสร้างแอปพลิเคชันของคุณ ก่อนอื่นคุณควรเลือกชุดเครื่องมือ UI จากนั้นเลือกกรอบงานที่ใช้กับชุดเครื่องมือนั้น FWIW ฉันจะเลือก Swing พร้อมกรอบ Guts-GUI ทำเองที่บ้าน :-)
jfpoilpret

1
มันมักจะเป็น Swing vs. SWT (สำหรับฉันอย่างน้อย) สำหรับการเปรียบเทียบขนาดเล็กคุณสามารถตรวจสอบอะไรคือสิ่งสำคัญที่โปรแกรมเมอร์ Java SWT ที่มีประสบการณ์ควรระวังเมื่อย้ายไปที่สวิง? ..
หมอผี

2
JavaFXไม่ได้เป็นส่วนหนึ่งของ SDK ตัวอย่างและพร้อมใช้งานสำหรับการใช้งานจริง โปรดอัปเดตโพสต์นี้

คำตอบ:


79

ต้นไม้ตัดสินใจ:

  1. กรอบงานเช่น Qt และ SWT ต้องการ DLLs ดั้งเดิม ดังนั้นคุณต้องถามตัวเองว่า: รองรับแพลตฟอร์มที่จำเป็นทั้งหมดหรือไม่ คุณสามารถแพ็คเกจ DLL พื้นเมืองด้วยแอปของคุณได้ไหม

    ดูที่นี่วิธีการทำเช่นนี้สำหรับ SWT

    หากคุณมีทางเลือกที่นี่คุณควรเลือก Qt มากกว่า SWT Qt ได้รับการพัฒนาโดยผู้ที่เข้าใจ UI และเดสก์ท็อปในขณะที่ SWT ได้รับการพัฒนาจากความจำเป็นเพื่อทำให้ Eclipse เร็วขึ้น มันเป็นแพทช์ประสิทธิภาพสำหรับ Java 1.4 มากกว่าเฟรมเวิร์ก UI หากไม่มี JFace คุณจะขาดองค์ประกอบ UI ที่สำคัญมากมายหรือคุณสมบัติที่สำคัญมากขององค์ประกอบ UI (เช่นการกรองในตาราง)

    หาก SWT ขาดคุณสมบัติที่คุณต้องการกรอบงานนั้นค่อนข้างจะเป็นมิตรต่อการขยาย ตัวอย่างเช่นคุณไม่สามารถขยายคลาสใด ๆ ในคลาสนั้นได้ (คลาสนั้นยังไม่สิ้นสุดพวกเขาเพียงแค่โยนข้อยกเว้นเมื่อแพ็กเกจthis.getClass()ไม่ได้org.eclipse.swtและคุณไม่สามารถเพิ่มคลาสใหม่ในแพ็คเกจนั้นได้เนื่องจากมีการลงชื่อ

  2. หากคุณต้องการโซลูชัน Java ดั้งเดิมที่บริสุทธิ์ซึ่งจะทำให้คุณหยุดพัก เริ่มจาก AWT, Swing, SwingX - the Swing way

    AWT ล้าสมัยแล้ว Swing ล้าสมัยแล้ว (อาจจะน้อยกว่านี้ แต่ก็มีงานไม่มากนักในช่วง 10 ปีที่ผ่านมา) คุณสามารถยืนยันว่า Swing เริ่มต้นได้ดี แต่เราทุกคนรู้ว่าโค้ดเน่า และนั่นเป็นเรื่องจริงสำหรับ UIs ในปัจจุบัน

    นั่นทำให้คุณกับ SwingX หลังจากระยะเวลานานของความคืบหน้าช้าพัฒนาได้หยิบขึ้นมาอีกครั้ง ข้อเสียเปรียบหลัก ๆ ของ Swing ก็คือมันเป็นความคิดเก่า ๆ ที่มีเลือดไหลออกมาเมื่อ 15 ปีที่แล้ว แต่รู้สึกว่า "เงอะงะ" วันนี้ ตัวอย่างเช่นมุมมองตารางจะสนับสนุนการกรองและการเรียงลำดับ แต่คุณยังต้องกำหนดค่านี้ คุณจะต้องเขียนรหัสจานหม้อไอน้ำจำนวนมากเพื่อรับ UI ที่เหมาะสมที่ให้ความรู้สึกทันสมัย

    อีกพื้นที่ที่อ่อนแอคือชุดรูปแบบ ณ วันนี้มีธีมมากมายรอบ ๆ ดูที่นี่สำหรับ 10 อันดับแรก แต่บางตัวก็ช้าบางตัวก็บั๊กกี้บางตัวก็ไม่สมบูรณ์ ฉันเกลียดเมื่อฉันเขียน UI และผู้ใช้บ่นว่ามีบางอย่างไม่ทำงานสำหรับพวกเขาเพราะพวกเขาเลือกธีมที่แปลก

  3. JGoodies เป็นอีกเลเยอร์บนสุดของ Swing เช่น SwingX มันพยายามทำให้ Swing น่าใช้ยิ่งขึ้น เว็บไซต์ดูดีมาก ลองดูที่บทช่วยสอน ... อืม ... ยังคงค้นหาอยู่ ... ดูเหมือนว่าไม่มีเอกสารใด ๆ ในเว็บไซต์เลย Google เพื่อช่วยเหลือ ไม่ไม่มีบทเรียนที่มีประโยชน์เลย

    ฉันไม่รู้สึกมั่นใจกับกรอบ UI ที่พยายามอย่างหนักเพื่อซ่อนเอกสารจากแฟนใหม่ที่อาจเกิดขึ้น นั่นไม่ได้หมายความว่า JGoodies ไม่ดี; ฉันไม่สามารถหาสิ่งที่ดีที่จะพูดเกี่ยวกับมัน แต่มันดูดี

  4. JavaFX ยอดเยี่ยมมีสไตล์ มีการสนับสนุนอยู่ แต่ฉันรู้สึกว่ามันเป็นของเล่นที่มีความแวววาวมากกว่ากรอบ UI ที่จริงจัง ความรู้สึกนี้มาจากการขาดองค์ประกอบ UI ที่ซับซ้อนเช่นตารางต้นไม้ มีความเป็นส่วนประกอบ WebKit ที่ใช้ในการแสดง HTML

    เมื่อมีการนำเสนอความคิดแรกของฉันคือ "ห้าปีสายเกินไป" หากเป้าหมายของคุณคือแอพที่ดีสำหรับโทรศัพท์หรือเว็บไซต์ก็ดี หากเป้าหมายของคุณคือแอพพลิเคชันเดสก์ท็อปมืออาชีพตรวจสอบให้แน่ใจว่าได้ส่งมอบสิ่งที่คุณต้องการ

  5. หมุน. ครั้งแรกที่ฉันได้ยินเกี่ยวกับมัน มันเป็นกรอบ UI ใหม่ที่ใช้ Java2D เมื่อวานฉันลองทำดู ไม่มีการแกว่งเพียงเล็กน้อยของ AWT ( new Font(...))

    ความประทับใจแรกของฉันคือสิ่งที่ดี มีเอกสารมากมายที่ช่วยให้คุณเริ่มต้นได้ ตัวอย่างส่วนใหญ่มาพร้อมกับการสาธิตสด (หมายเหตุ: คุณต้องเปิดใช้งาน Java ในเว็บเบราว์เซอร์ของคุณซึ่งเป็นความเสี่ยงด้านความปลอดภัย ) ในหน้าเว็บเพื่อให้คุณเห็นรหัสและแอปพลิเคชันที่เกิดขึ้นเคียงข้างกัน

    จากประสบการณ์ของฉันมีความพยายามมากขึ้นในการเขียนโค้ดมากกว่าเป็นเอกสาร การดูเอกสาร Pivot ต้องใช้ความพยายามอย่างมากในรหัสนี้ โปรดทราบว่าขณะนี้มีข้อผิดพลาดที่ป้องกันไม่ให้บางตัวอย่างทำงาน ( PIVOT-858 ) ในเบราว์เซอร์ของคุณ

    ความประทับใจครั้งที่สองของฉันเกี่ยวกับ Pivot คือมันใช้งานง่าย เมื่อฉันพบปัญหาฉันมักจะสามารถแก้ไขได้อย่างรวดเร็วโดยดูตัวอย่าง ฉันไม่มีข้อมูลอ้างอิงของสไตล์ทั้งหมดที่แต่ละส่วนประกอบสนับสนุน

    เช่นเดียวกับ JavaFX ก็ขาดองค์ประกอบระดับสูงกว่าเช่นองค์ประกอบตารางต้นไม้ ( PIVOT-306 ) ฉันไม่ได้ลองขี้เกียจโหลดด้วยมุมมองตาราง ความประทับใจของฉันคือถ้าโมเดลพื้นฐานใช้การโหลดแบบขี้เกียจนั่นก็เพียงพอแล้ว

    สัญญาว่า ถ้าเป็นไปได้ลองทำดู


Pivot สาธิตการทดลอง "Kitchen sink" หลังจากเปิดบางกลุ่มมันกินซีพียูทั้งหมด ถ้าเป็นเพราะการออกแบบ Pivot ฉันก็ไม่ต้องการมันในโครงการของฉัน
ชื่อที่แสดง

ดูเหมือนว่าฉันได้พบแหล่งที่มาของปัญหาแล้วและได้รับการแก้ไขในรุ่นที่ใหม่กว่า: apache-pivot-users.399431.n3.nabble.com/…
ชื่อที่แสดง

2
JavaFX 8 (สำหรับ Java 8 ขึ้นไป) มีวิดเจ็ต TreeTableView อย่างไรก็ตาม JavaFX 2.2 (สำหรับ Java 7) ขาดนี้และยังไม่มีข้อผิดพลาดและข้อมูลมาตรฐาน dialgos: ดูstackoverflow.com/a/12760202/105137 นอกจากนี้ยังมีไลบรารีวิดเจ็ต ControlsFX สำหรับ Java 8 เท่านั้น: fxexperience.com/controlsfx
kostmo

12

SWTด้วยตัวของมันเองค่อนข้างต่ำและใช้วิดเจ็ตดั้งเดิมของแพลตฟอร์มผ่าน JNI ไม่เกี่ยวข้องกับ Swing และ AWT เลย Eclipse IDEและทุกโปรแกรมไคลเอนต์ที่อุดมไปด้วย Eclipse-based เช่นลูกค้า Vuze BitTorrent , สร้างขึ้นโดยใช้ SWT นอกจากนี้หากคุณกำลังพัฒนาปลั๊กอิน Eclipse คุณมักจะใช้ SWT
ฉันได้พัฒนาแอพพลิเคชั่นและปลั๊กอินที่ใช้ Eclipse เป็นเวลาเกือบ 5 ปีแล้วดังนั้นฉันจึงลำเอียงอย่างชัดเจน อย่างไรก็ตามฉันยังมีประสบการณ์ในการทำงานกับ SWT และชุดเครื่องมือ JFace UIซึ่งสร้างขึ้นบนสุดของมัน ฉันพบว่าเจซีซมีความอุดมสมบูรณ์และทรงพลัง ในบางกรณีอาจเป็นเหตุผลหลักในการเลือก SWT มันช่วยให้คุณสามารถสร้าง UI ที่ใช้งานได้อย่างรวดเร็วตราบใดที่มันเหมือน IDE (ด้วยตารางต้นไม้การควบคุมเนทิฟ ฯลฯ ) แน่นอนว่าคุณสามารถรวมการควบคุมที่กำหนดเองของคุณได้ด้วย แต่ก็ต้องใช้ความพยายามเป็นพิเศษ


ในความเห็นของคุณส่วนประกอบขั้นสูงเช่น TreeTable ที่มีการเรียงลำดับคอลัมน์และการกรองเป็นปัญหาใหญ่ของ SWT + JFace หรือไม่
netbrain

@ netbrain: ฉันทำมาหลายครั้งแล้วมันตรงไปตรงมากับ JFace นี่คือสิ่งที่ฉันหมายถึงโดยอินเทอร์เฟซ "เหมือน IDE" อาจไม่ใช่คำที่ดีที่สุด
Zsolt Török

9

ผมอยากจะขอแนะนำกรอบอื่น: Apache Pivot http://pivot.apache.org/

ฉันลองมันสั้น ๆ และรู้สึกประทับใจกับสิ่งที่มันสามารถนำเสนอในฐานะAla Flash กรอบงาน RIA (Rich Internet Application)

มันแสดงผล UI โดยใช้ Java2D จึงลดผลกระทบของมรดก (IMO, bloated) ของ Swing และ AWT


1
ฉันรู้สึกว่า netbrain ถามเกี่ยวกับแอปบนเดสก์ท็อป สำหรับกรอบ RIA ให้พิจารณาด้วย GWT และ Vaadin เฟรมเวิร์กเหล่านี้ช่วยให้คุณเขียนใน Java คอมไพล์และรับ JavaScript ที่ทำงานได้ดีบนเว็บเบราว์เซอร์ทั่วไปทั้งหมด
Costis Aivalis

ไม่สามารถใช้เดือยสำหรับแอปพลิเคชันเดสก์ท็อปได้
netbrain

อาจเป็นเรื่องของคำจำกัดความ แต่กรอบ RIA ได้รับการออกแบบโดยทั่วไปเพื่อให้ทำงานในเบราว์เซอร์
Costis Aivalis

2
@netbrain: ใช่คุณสามารถเรียกใช้ Pivot เป็นแอพเดสก์ท็อป (JFrame) หรือแอปเล็ต (JApplet)
Augustus Thoo

9

Swing + SwingX + Miglayoutเป็นทางเลือกของฉัน Miglayout นั้นง่ายกว่า Swings ที่รับรู้ถึงตัวจัดการเลย์เอาท์ที่แตกต่างกันถึง 200 ตัวและมีประสิทธิภาพมากกว่า นอกจากนี้ยังช่วยให้คุณสามารถ "แก้ไขข้อบกพร่อง" เลย์เอาต์ของคุณซึ่งเป็นประโยชน์อย่างยิ่งเมื่อสร้างเลย์เอาต์ที่ซับซ้อน


8

อีกตัวเลือกหนึ่งคือการใช้Qt แจม มันมีความยอดเยี่ยมเกือบทั้งหมดของ Qt (ส่วนประกอบมากมายเอกสารที่ดีใช้งานง่าย) โดยไม่ต้องวุ่นวายกับ C ++ ฉันใช้มันเมื่อ 3-4 ปีก่อนสำหรับโครงการขนาดเล็กแม้กระทั่งมันก็เกือบจะสมบูรณ์แล้ว

คุณอาจต้องการที่จะเห็นการอภิปรายเกี่ยวกับการสวิงกับ Qt ที่นี่


5

ความคิดเห็นส่วนตัวของฉัน: ไปกับ Swing พร้อมกับแพลตฟอร์ม NetBeans

หากคุณต้องการส่วนประกอบขั้นสูง (มากกว่า NetBeans ข้อเสนอ) คุณสามารถรวม SwingX ได้อย่างง่ายดายโดยไม่มีปัญหา (หรือ JGoodies) เนื่องจากแพลตฟอร์ม NetBeans นั้นขึ้นอยู่กับ Swing อย่างสมบูรณ์

ฉันจะไม่เริ่มต้นแอปพลิเคชันเดสก์ท็อปขนาดใหญ่ (หรืออันที่จะใหญ่) โดยไม่มีแพลตฟอร์มที่ดีที่สร้างขึ้นบนกรอบงาน UI พื้นฐาน

ตัวเลือกอื่นคือ SWT ร่วมกับ Eclipse RCP แต่ก็ยากกว่า (แม้ว่าจะเป็นไปไม่ได้) ในการรวมส่วนประกอบ Swing ที่ "บริสุทธิ์" ไว้ในแอปพลิเคชัน

กราฟการเรียนรู้ค่อนข้างชันสำหรับแพลตฟอร์ม NetBeans (แม้ว่าฉันเดาว่ามันเป็นเรื่องจริงสำหรับ Eclipse เช่นกัน) แต่มีหนังสือดีๆอยู่รอบ ๆ ซึ่งฉันอยากจะแนะนำ


1
โปรดทราบว่า SwingX เป็นส่วนประกอบ (AFAIU) ที่เป็นส่วนขยายหรือองค์ประกอบขององค์ประกอบสวิงที่มีอยู่ JGoodies OTOH เป็นเรื่องเกี่ยวกับ PLAF และเลย์เอาต์ แต่อย่างที่คุณบอกว่าจะรวมเข้ากับ Swing อย่างราบรื่น
Andrew Thompson

1
+1 ยึดการพัฒนาบน Swing Swing ถูกสร้างขึ้นบน AWT และรวมถึงส่วนประกอบที่มีน้ำหนักเบาซึ่งมีลักษณะและการทำงานที่เหมือนกันในทุกแพลตฟอร์มดังนั้นคุณไม่ควรใช้ส่วนประกอบ AWT โดยตรง มีถั่วที่ยอดเยี่ยมจำนวนมากที่คุณสามารถเพิ่มลงใน GUI การพัฒนาของคุณได้อย่างง่ายดายเช่น toedter.com JCalendar
Costis Aivalis

1
@Andrew นอกเหนือจาก PLAF และโครงร่างแล้ว JGoodies นำเสนอเพิ่มเติม: beans binding (สำหรับรูปแบบรูปแบบการนำเสนอ) การตรวจสอบและกรอบ "JSR-296 like" (ซึ่งเป็นเชิงพาณิชย์)
jfpoilpret

3

คุณลืม Java Desktop Aplication ตาม JSR296 เป็น Swing Framework ในตัวใน NetBeans

ยกเว้น AWT และ JavaFX เฟรมเวิร์กที่ได้รับการออกแบบมาทั้งหมดของคุณจะขึ้นอยู่กับ Swing หากคุณเริ่มต้นด้วย Swing คุณจะเข้าใจ (ชัดเจน) สำหรับ Swing ทั้งหมด (Based Frameworks) เหล่านี้

ATW, SWT (Eclipse), Java Desktop Aplication (Netbeans), SwingX, JGoodies

กรอบทั้งหมดมี (ฉันไม่รู้อะไรเพิ่มเติมเกี่ยวกับ JGoodies) รวม JavaFX ไม่ได้มีความคืบหน้าใด ๆ มานานกรอบการทำงานพื้นฐานของ Swing จะหยุดลงหากไม่ได้ใช้เวอร์ชั่นใหม่ล่าสุด

เพียงแค่มุมมองของฉัน - ที่ดีที่สุดของพวกเขาคือ SwingX แต่ต้องการความรู้ที่ลึกที่สุดเกี่ยวกับ Swing

รูปลักษณ์และความรู้สึกตามกรอบการทำงานของ Swing


ส่วนหนึ่งของพวกเขาใน AWT ส่วนประกอบส่วนหนึ่งเกี่ยวกับ Swing JCompoentns แต่ระหว่าง AWT และ Swing คือความแตกต่างด้วยวิธีการดำเนินการ accesible และสืบทอดเช่นสวิง JComponents โดยตรง (API) การดำเนินการจำนวนมากสืบทอดหรือวิธีการที่ซ้อนกันโดยตรงจาก AWT :-)
mKorbel

JSR296 นั้นตายแล้ว จะไม่ "คงไว้" อีกต่อไปและการสนับสนุนนั้นถูกลบออกจาก NetBeans (และมันไม่เคยเป็นกรอบที่ดีจริงๆที่จะเริ่มต้นด้วย)
a_horse_with_no_name

@a_horse_with_no_name ที่ถูกต้องwith same progressใน SWT, SwingX, เจ้าของใหม่, maniers ใหม่
mKorbel

1
SWT พัฒนาโดย IBM ไม่ได้ใช้ Swing แต่เป็น / เป็นเทคโนโลยีการแข่งขัน Swing ใช้ AWT JavaFX ไม่ได้ขึ้นอยู่กับ Swing เช่นกัน มันเป็นกรอบใหม่ทั้งหมด บางคนเรียกมันว่าเป็นตัวตายตัวแทนของ Swing แต่มันยังไม่โตเกินไปที่จะเรียกการต่อสู้นั้น ฉันกำลังตัดสินใจอย่างเดียวกันในขณะนี้และ Swing เป็นผู้สมัครของฉันเพียงเพราะความจริงที่ว่ามันเป็นตัวเลือกที่เป็นผู้ใหญ่ที่สุด
กอร์ดอน

1
SwingX เป็นส่วนขยายของ Swing (ซึ่งเป็นเหตุผลว่าทำไมจึงต้องใช้ความรู้ Swing) ในความเป็นจริงแล้วคุณสมบัติบางอย่างของ SwingX ได้ถูกนำไปใช้กับ Swing เอง
กอร์ดอน

3

ฉันมีความสุขมากกับ Swing สำหรับแอปพลิเคชันบนเดสก์ท็อปที่ฉันเคยมีส่วนร่วมอย่างไรก็ตามฉันจะแบ่งปันมุมมองของคุณใน Swing ที่ไม่ได้เสนอส่วนประกอบขั้นสูง สิ่งที่ฉันทำในกรณีนี้คือไปที่ JIDE มันไม่ฟรี แต่ก็ไม่แพงเหมือนกันและมันมอบเครื่องมือเพิ่มเติมมากมายให้คุณ โดยเฉพาะพวกมันมี TreeTable ที่สามารถกรองได้


ดีแล้วที่รู้! ดังนั้น JIDE จึงได้สร้างองค์ประกอบของตัวเองขึ้นอยู่กับ Swing ...
netbrain

ใช่ JIDE ได้สร้างองค์ประกอบไม่กี่อย่างที่ครอบคลุมกริดต้นไม้ตารางกราฟและสิ่งที่คล้ายกัน อย่างที่ฉันบอกว่ามันไม่ฟรี แต่ให้เวลาเพื่อทำให้สิ่งเหล่านี้ด้วยตัวคุณเองคุณอาจจะดีกว่าที่ใช้สิ่งที่ทำไปแล้ว นอกจากนี้เท่าที่ฉันเข้าใจ JIDE มีความยืดหยุ่นเกี่ยวกับการอนุญาตให้โครงการโอเพ่นซอร์สใช้ส่วนประกอบของพวกเขาเพื่อแลกเปลี่ยนกับลิงค์ไปยังเว็บไซต์หรือโลโก้ในกล่องโต้ตอบ 'เกี่ยวกับ'
sbrattla

3

ฉันจะไปกับสวิง สำหรับเลย์เอาต์ฉันจะใช้เค้าโครงของ JGoodies มูลค่าการศึกษากระดาษสีขาวในเค้าโครงแบบฟอร์มที่นี่ - http://www.jgoodies.com/freeware/forms/

นอกจากนี้หากคุณกำลังจะเริ่มพัฒนาแอพพลิเคชั่นเดสก์ท็อปขนาดใหญ่คุณจะต้องมีกรอบ คนอื่น ๆ ได้ชี้ให้เห็นกรอบ netbeans ฉันไม่ชอบมันมากดังนั้นจึงเขียนใหม่ที่ตอนนี้เราใช้ใน บริษัท ของฉัน ฉันวางมันลงบน sourceforge แล้ว แต่ไม่พบเวลาที่จะบันทึกมันมากนัก นี่คือลิงค์สำหรับเรียกดูรหัส:

http://swingobj.svn.sourceforge.net/viewvc/swingobj/

การแสดงควรจะแสดงวิธีการเข้าสู่ระบบอย่างง่ายจริง ๆ ..

แจ้งให้เราทราบหากคุณมีคำถามใด ๆ ที่ฉันสามารถช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.