อะไรคือความแตกต่างที่สำคัญระหว่างsetSize()
และsetPreferredSize()
. บางครั้งฉันก็ใช้setSize()
บางครั้งบางครั้งsetPreferredSize()
ก็ทำในสิ่งที่ฉันต้องการบางครั้ง
ฉันควรใช้สายอะไรสำหรับJFrame
s and JPanel
s?
อะไรคือความแตกต่างที่สำคัญระหว่างsetSize()
และsetPreferredSize()
. บางครั้งฉันก็ใช้setSize()
บางครั้งบางครั้งsetPreferredSize()
ก็ทำในสิ่งที่ฉันต้องการบางครั้ง
ฉันควรใช้สายอะไรสำหรับJFrame
s and JPanel
s?
คำตอบ:
การใช้งานขึ้นอยู่กับว่าพาเรนต์ของคอมโพเนนต์มีตัวจัดการโครงร่างหรือไม่
setSize()
- ใช้เมื่อไม่มีตัวจัดการโครงร่างหลักsetPreferredSize()
(ยังเกี่ยวข้องsetMinimumSize
และsetMaximumSize
) - ใช้เมื่อมีตัวจัดการโครงร่างหลักsetSize()
วิธีการอาจจะไม่ได้ทำอะไรถ้าพ่อแม่ของส่วนประกอบที่มีการใช้การจัดการรูปแบบ; สถานที่ที่มักจะมีผลกระทบจะอยู่ในส่วนประกอบระดับบนสุด ( JFrame
s และJWindow
s) และสิ่งที่อยู่ภายในบานหน้าต่างเลื่อน คุณต้องโทรหาsetSize()
หากคุณมีส่วนประกอบภายในพาเรนต์ที่ไม่มีตัวจัดการเลย์เอาต์
โดยทั่วไปsetPreferredSize()
จะจัดวางองค์ประกอบตามที่คาดไว้หากมีตัวจัดการโครงร่าง ตัวจัดการโครงร่างส่วนใหญ่ทำงานโดยรับขนาดของส่วนประกอบที่ต้องการ (เช่นเดียวกับขั้นต่ำและสูงสุด) จากนั้นใช้setSize()
และsetLocation()
วางตำแหน่งส่วนประกอบเหล่านั้นตามกฎของโครงร่าง
ตัวอย่างเช่นการBorderLayout
พยายามทำให้ขอบเขตของพื้นที่ "ทิศเหนือ" เท่ากับขนาดที่ต้องการขององค์ประกอบทางทิศเหนือซึ่งอาจมีขนาดใหญ่หรือเล็กกว่านั้นขึ้นอยู่กับขนาดของJFrame
ขนาดของส่วนประกอบอื่น ๆ ในเค้าโครงและอื่น ๆ
setSize()
หรือsetBounds()
สามารถใช้เมื่อไม่มีการใช้ตัวจัดการเค้าโครง
อย่างไรก็ตามหากคุณใช้ตัวจัดการโครงร่างคุณสามารถให้คำแนะนำแก่ผู้จัดการเค้าโครงโดยใช้setXXXSize()
วิธีการเช่นsetPreferredSize()
และsetMinimumSize()
อื่น ๆ
และตรวจสอบให้แน่ใจว่าคอนเทนเนอร์ของคอมโพเนนต์ใช้ตัวจัดการโครงร่างที่สอดคล้องกับขนาดที่ร้องขอ FlowLayout
, GridBagLayout
และSpringLayout
ผู้จัดการใช้ขนาดที่ต้องการของส่วนประกอบ (ที่สองหลังขึ้นอยู่กับข้อ จำกัด ที่คุณตั้งไว้) แต่BorderLayout
และGridLayout
มักจะ don't.If คุณระบุคำแนะนำขนาดใหม่สำหรับองค์ประกอบที่มีอยู่แล้วมองเห็นคุณจะต้องเรียกวิธีการตรวจสอบใหม่ใน เพื่อให้แน่ใจว่ามีการวางลำดับชั้นการกักกันอีกครั้ง จากนั้นเรียกใช้วิธีการทาสีใหม่
setSize
จะปรับขนาดส่วนประกอบให้เป็นขนาดที่ระบุ
setPreferredSize
กำหนดขนาดที่ต้องการ คอมโพเนนต์อาจไม่ได้มีขนาดเท่านี้ขึ้นอยู่กับขนาดของคอนเทนเนอร์ที่อยู่ในคอนเทนเนอร์หรือหากผู้ใช้ปรับขนาดคอมโพเนนต์ใหม่ด้วยตนเอง
ไออาร์ซี ...
setSize
กำหนดขนาดของส่วนประกอบ
setPreferredSize
กำหนดขนาดที่ต้องการ Layoutmanager จะพยายามจัดพื้นที่ให้กับส่วนประกอบของคุณ
ขึ้นอยู่กับว่าคุณใช้ตัวจัดการเลย์เอาต์หรือไม่ ...