Saya menyetel textArea setGrowByContent true dan setGrowLimit ke 2, tetapi selalu hanya ada satu baris. Jadi saya memutar kode dan menambah tinggi textArea dua kali jika ukuran textArea lebih besar dari ukuran Tombol. Di bawah ini adalah kode-kodenya. Masalah saya ada di akhir pertanyaan:
Button homeButtonn = new Button(btnIcon){
@Override
protected Dimension calcPreferredSize() {
System.out.println("Button size: " + super.calcPreferredSize());
return super.calcPreferredSize();
}
@Override
public void setUIID(String id) {
super.setUIID("homeButtonn");
}
};
TextArea buttonTitle = new TextArea(title){
@Override
protected Dimension calcPreferredSize() {
System.out.println("textArea title: " + getText());
System.out.println("Textarea size: " +super.calcPreferredSize());
System.out.println("");
return super.calcPreferredSize();
}
};
buttonTitle.setUIID("smallLabel");
buttonTitle.getAllStyles().setAlignment(Label.LEFT);
zeroPaddingMargin(buttonTitle);
if (buttonTitle.getPreferredW() -10 > homeButtonn.getPreferredW()) {
buttonTitle.setPreferredH(buttonTitle.getPreferredH() * 2);
}
buttonTitle.setPreferredW(homeButtonn.getPreferredW() - 10);
buttonTitle.getAllStyles().setMargin(3, 3, 3, 3);
buttonTitle.setEditable(false);
buttonTitle.setGrowByContent(true);
buttonTitle.setGrowLimit(2);
buttonTitle.setScrollVisible(false);
gridContainer.add(LayeredLayout.encloseIn(homeButtonn, FlowLayout.encloseRightBottom(buttonTitle)));
KELUARAN:
Button size: width = 146 height = 140
textArea title: DJ and Sound
Textarea size: width = 194 height = 25
Di sini ukuran textArea lebih besar dari ukuran tombol tetapi jika saya mengatur ukuran textArea dengan ukuran tombol yang tepat, itu akan pas. Jadi bagaimana ukuran textArea bisa lebih besar dari ukuran tombol dan juga semua teks textArea cocok di dalam tombol? Masalah yang saya dapatkan adalah karena ukuran textArea lebih besar dari ukuran tombol, tinggi textArea dikalikan dengan dua kali tingginya tetapi textArea pas dalam satu baris dan menyisakan garis/baris tambahan di bawahnya.
PS lihat tangkapan layarnya. Terima kasih
tanpa kalkUkuran pilihan atau Ukuran pilihan:
Jika calcPreferredSize dihilangkan, dibutuhkan seluruh lebar layar meskipun dalam gridlayout dengan 3 kolom
Pembaruan: Kode Terbaru tanpa calcPreferredSize & textArea juga bersarang di dalam wadah
GridLayout gl2 = new GridLayout(counter / 3 + 1, 3);
gl2.setAutoFit(true);
Container gridContainer = new Container(gl2);
gridContainer.setScrollableY(true);
f.addComponent(gridContainer);
imageUrl = entry.get("img").toString();
title = entry.get("name").toString();
homePlaceholder = homePlaceholder.scaled(screenWidth / 3 - 20, screenWidth / 3 - 26);
encodedHomePlaceholder = EncodedImage.createFromImage(homePlaceholder, true);
Image btnIcon = URLImage.createToStorage(encodedHomePlaceholder, "home_" + title + imageUrl, allUrl.globalHomeImageUrl + imageUrl, URLImage.RESIZE_SCALE_TO_FILL);
homeButton.setIcon(btnIcon);
TextArea buttonTitle = new TextArea(title);
buttonTitle.getAllStyles().setAlignment(Label.LEFT);
buttonTitle.getAllStyles().setMargin(3, 3, 3, 3);
buttonTitle.setEditable(false);
buttonTitle.setGrowByContent(true);
buttonTitle.setGrowLimit(2);
buttonTitle.setScrollVisible(false);
Container btnTitleContainer = new Container();
btnTitleContainer.addComponent(buttonTitle);
gridContainer.add(LayeredLayout.encloseIn(homeButton, FlowLayout.encloseRightBottom(btnTitleContainer)));
f.revalidate();