person mallardz    schedule 12.04.2014    source manba


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.

rasm tavsifini shu yerga kiriting

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 komponent subPanel dir, shuning uchun bottomPanel ning umumiy o'lchami subPanel 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
comment
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