Swing เป็นชุดเครื่องมือ GUI ที่ออกแบบมาสำหรับ Java
Swing เป็นส่วนหนึ่งของคลาส Java Basic
Swing รวมถึงอุปกรณ์อินเทอร์เฟซผู้ใช้กราฟิก (GUI) เช่นกล่องข้อความ, ปุ่ม, แยกบานพับและตาราง
Swing ให้องค์ประกอบการแสดงผลหน้าจอที่ดีกว่า AWT พวกเขาเขียนด้วยชวาบริสุทธิ์เพื่อให้พวกเขาสามารถวิ่งข้ามแพลตฟอร์มเช่นเดียวกับ Java เองซึ่งไม่เหมือน AWT พวกเขาเป็นส่วนหนึ่งของ JFC พวกเขาสนับสนุนแผงควบคุมและธีมที่เปลี่ยนได้ (ธีมเฉพาะสำหรับระบบปฏิบัติการที่หลากหลาย) แต่แทนที่จะใช้อุปกรณ์ที่จัดทำโดยแพลตฟอร์มพื้นเมืองพวกเขาเพียงแค่เลียนแบบพวกเขาบนพื้นผิว ซึ่งหมายความว่าคุณสามารถใช้พาเนลใด ๆ ที่รองรับโดย Java บนแพลตฟอร์มใด ๆ ข้อเสียของส่วนประกอบที่มีน้ำหนักเบาคือพวกเขาช้าในการดำเนินการและข้อได้เปรียบคือพวกเขาสามารถใช้พฤติกรรมที่เป็นเอกภาพในทุกแพลตฟอร์ม
ลองมาดูตัวอย่างง่ายๆในการใช้ปุ่ม:
นำเข้า java.awt.*; นำเข้า Java.awt.geom.*; นำเข้า Javax.swing.*; คลาส rbutton ขยาย JButton {สาธารณะ rbutton (ฉลากสตริง) {super (label); // การประกาศเหล่านี้ขยายปุ่มไปยังวงกลมแทนวงรี ขนาดของมิติ = getPreferredSize (); size.width = size.height = math.max (size.width, size.height); setPreferredSize (ขนาด); // การโทรนี้ทำให้ JButton ไม่วาดพื้นหลัง แต่ช่วยให้เราวาดพื้นหลังวงกลม SetContentareafilled (เท็จ); this.setbackground (color.gray);} // วาดพื้นหลังและฉลากของวงกลมที่ป้องกันเป็นโมฆะ paintcomponent (กราฟิก g) {ถ้า (getModel (). isarmed ()) {// คุณสามารถเลือกสีที่ไฮไลต์เป็นคุณสมบัติของ G.SetColor 0, getSize (). ความกว้าง - 1, getSize (). ความสูง - 1); // การโทรนี้จะวาดฉลากและสี่เหลี่ยมผืนผ้าโฟกัส super.paintComponent (g);} // ใช้ส่วนโค้งง่าย ๆ เพื่อวาดขอบเขตของปุ่ม Void PaintBorder (กราฟิก g) {g.setColor (getForeground ()); g.Drawoval (0, 0, getSize (). ความกว้าง - 1, getSize (). ความสูง - 1);} // ตรวจจับรูปร่างของเหตุการณ์การคลิก if (shape == null ||! shape.getBounds (). เท่ากับ (getBounds ())) {shape = new Ellipse2d.float (0, 0, getWidth (), getheight ());} return shape.contains (x, y);} // ปุ่ม jbutton = ใหม่ rbutton ("jackpot"); imageicon ic = new imageicon ("e: //clientformssql//icons//item_group.gif"); jbutton button2 = new jbutton (ic) JFrame frame = new JFrame (); frame.setDefaultCloseOperation (jFrame.exit_on_close); // frame.getContentPane (). setbackground (color.gray); frame.getContentpane (). เพิ่ม (ปุ่ม); flowlayout ()); frame.setsize (200, 200); frame.setvisible (true);}}ผลลัพธ์:
ต่อไปฉันจะแชร์ตัวอย่าง Java ของปุ่มที่ใช้งานการคลิกอย่างง่าย
นี่คือเคล็ดลับสำหรับการทำปุ่มวงสวิง ในความเป็นจริงเคล็ดลับนี้สามารถใช้งานได้อย่างสะดวกกับปุ่มใด ๆ แต่เราทำปุ่มกลมเท่านั้น เมื่อคุณทำปุ่มกลมคุณต้องทำสองสิ่ง สิ่งแรกคือการโอเวอร์โหลดวิธีการวาดภาพที่เหมาะสมเพื่อวาดวงกลม สิ่งที่สองคือการตั้งค่าบางอย่างเพื่อให้ปุ่มจะตอบสนองเฉพาะเมื่อคุณคลิกที่ช่วงของปุ่มวงกลม (ไม่ใช่ช่วงของสี่เหลี่ยมที่มีปุ่มวงกลม)
นำเข้า java.awt.*; นำเข้า Java.awt.geom.*; นำเข้า Javax.swing.*; Roundbutton ระดับสาธารณะขยาย JButton {Roundbutton สาธารณะ (ฉลากสตริง) {super (label); // การประกาศเหล่านี้ขยายปุ่มไปยังวงกลมแทนวงรี ขนาดของมิติ = getPreferredSize (); size.width = size.height = math.max (size.width, size.height); setPreferredSize (ขนาด); // การโทรนี้ทำให้ JButton ไม่วาดพื้นหลัง แต่ช่วยให้เราวาดพื้นหลังวงกลม SetContentareafilled (FALSE);} // วาดพื้นหลังและฉลากของวงกลมที่ป้องกันเป็นโมฆะ paintComponent (กราฟิก g) {ถ้า (getModel (). isArmed ()) {// คุณสามารถเลือกสีไฮไลต์เป็นคุณสมบัติของปุ่มวงกลม 0, getSize (). ความกว้าง - 1, getSize (). ความสูง - 1); // การโทรนี้จะวาดฉลากและสี่เหลี่ยมผืนผ้าโฟกัส super.paintComponent (g);} // ใช้ส่วนโค้งง่าย ๆ เพื่อวาดขอบเขตของปุ่ม Void PaintBorder (กราฟิก g) {g.setColor (getForeground ()); g.Drawoval (0, 0, getSize (). ความกว้าง - 1, getSize (). ความสูง - 1);} // ตรวจจับรูปร่างของเหตุการณ์การคลิก if (shape == null ||! shape.getBounds (). เท่ากับ (getBounds ())) {shape = new Ellipse2d.float (0, 0, getWidth (), getheight ());} return shape.contains (x, y);} // ปุ่ม JButton = Roundbutton ใหม่ ("Jackpot"); button.setbackground (color.green); // สร้างเฟรมเพื่อแสดงปุ่มนี้ JFrame frame = new JFrame (); frame.getContentPane (). setBackground (color.yellow); frame.getContentPane (). เพิ่ม (ปุ่ม); frame.getContentPane (). setLayout (flowlayout ใหม่ (); frame.setsizeผลลัพธ์:
คลิกกิจกรรม:
เนื่องจากเราต้องการรักษาฟังก์ชันการทำงานส่วนใหญ่ของ JButton เราจึงปล่อยให้คลาส Roundbutton สืบทอดคลาส JButton ในตัวสร้าง Roundbutton วิธีการ setContentareafilled () เรียกว่า สิ่งนี้ทำให้ปุ่มวาดพื้นที่โฟกัสสี่เหลี่ยม แต่ไม่ใช่พื้นหลัง
ตอนนี้เราต้องวาดพื้นหลังวงกลม นี่คือความสำเร็จโดยการใช้วิธี overload -Component () วิธีนั้นใช้วิธีกราฟิก Filloval () เพื่อวาดวงกลมของแข็ง จากนั้นเมธอด PaintComponent () จะเรียก super.paintComponent () เพื่อวาดฉลากบนวงกลมแข็ง
ตัวอย่างนี้ยังแทนที่เมธอด PaintBorder () เพื่อวาดขอบบนขอบเขตของปุ่มวงกลม หากคุณไม่ต้องการพรมแดนคุณยังไม่สามารถโอเวอร์โหลดวิธีนี้ได้ วิธีนี้เรียกวิธีกราฟิก DRAWOVAVAL () เพื่อวาดเส้นขอบบาง ๆ บนขอบเขตของวงกลม
หมายเหตุ: ใน JDKTM1.2.2 เมื่อคุณลากเมาส์เข้าหรือออกจากช่วงปุ่มพฤติกรรมของ JButton มีข้อผิดพลาดเล็กน้อย ในทางทฤษฎีเมื่อคุณคลิกเมาส์บนปุ่มวงกลมแล้วลากเมาส์ออกจากขอบเขตของปุ่มปุ่มควรเปลี่ยนรูปร่าง เมื่อคุณลากเมาส์ไปยังขอบเขตของปุ่มปุ่มควรตอบกลับรูปร่าง น่าเสียดายที่รหัสที่มีพฤติกรรมนี้ไม่สามารถเรียกใช้วิธีการ () แต่จะใช้เฉพาะ 'ช่วงขีด จำกัด ' ของปุ่ม (ซึ่งเป็นช่วงสี่เหลี่ยมขั้นต่ำที่มีปุ่ม) โปรดทราบว่าหากคุณลากเมาส์เล็กน้อยภายในขอบเขตของวงกลมนั่นคือให้ออกจากช่วงของวงกลม แต่ไม่ใช่ขอบเขตปุ่มจะไม่เปลี่ยนรูปร่าง
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการเขียนโปรแกรม Java เพื่อใช้รหัสอินสแตนซ์ปุ่มวงสวิงรอบฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!