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