Takroriy nusxa: stackoverflow.com/q/16122893/1591669
Javoblar (1)
Siz xohlagan aniq natijaga ishonchim komil emas, shuning uchun men hatto harakat qilmadim. Ammo siz duch kelayotgan muammo - bu sabablardan biri, siz setSize()
emas, balki pack()
ramkangizni xohlaysiz. Siz komponentning afzal qilingan o'lchamlarini cheklayapsiz. pack()
barcha komponentlaringizning afzal qilingan hajmini hurmat qiladi va setSize()
emas, balki ishlatilishi kerak
bottomPanel.setLayout(new GridLayout(6,0)); //doesn't work..
// with pack(), now it does.
pack();
//setSize(400,400); // if you increase the size it'll work also, but just pack()
O'zingiz xohlagan ko'rinishga ega bo'lish uchun siz shunchaki komponentlaringizni joylashtirish ustida ishlashingiz kerak :)
Muammoingiz haqida batafsilroq tushuntirish.
Fonni o'rnatganimda kodingiz shunday ko'rinadi. Eslatma: setSize()
yuqori panelingizning afzal qilingan o'lchamiga (200, 200) to'lov olib borayotganini allaqachon ko'rishingiz mumkin.
- Yuqori CYAN sizning tasvir panelingizdir.
- KO'K - 4 qatorli
subPanel
. GridLayout bilan barcha qatorlar hech bo'lmaganda uning eng katta komponentining o'lchamiga ega bo'ladi. Bunday holda, bu belgi. Siz ko'k maydon yorliqning balandligidan 4 baravar ko'p ekanligini ko'rishingiz mumkin (xuddi shunday bo'lishi kerak) - QIZIL emas, ya'ni
bottomPanel
. Bu 5 qatordan iborat. Eng katta komponentsubPanel
dir, shuning uchunbottomPanel
ning umumiy o'lchamisubPanel
x 5 o'lchamidir, buni siz ham ko'rib turganingizdek. Boshqa qator qo'shsangiz, yuqori panel tashqariga chiqariladi.
person
Paul Samsotha
schedule
12.04.2014
Rahmat! Men hech qachon setSize() dan foydalanmayman va bu safar uni o'rnatganimni unutganman. Men ko'p yillar davomida boshqa kodlarni sinab ko'rganimga ishonmayman, bu butunlay boshqacha muammo deb o'yladim va faqat bitta qatorni qoldirdim.
- person mallardz; 12.04.2014