Basit bir Soru Başvuru Uygulaması yapıyorum. Özel bir javaFX bileşeni içinde bir TableView kullanıyorum (bir soruyu temsil eden), ListView içinde (tüm soruları temsil etmek için kullanılır) ListCell olarak kullanılır.javafx TableView Boyutunu gerekli boyuta nasıl sınırlarsınız?
Ne İstiyorum: Her bir ListCell, tam içeriğini hala açıklarken mümkün olduğunca az alan kullanıyor (veya gerekli).
Ne olur? TableView standart bir boyuta göre varsayılan görünüyor. Tabloda daha fazla içerik varsa, içeriğini bir ScrollPane içinde görüntüler. TableView daha az içeriğe sahipse, kendisini boş alanla doldurur.
Ben bir dizi yolla benim sorunu çözmek için çalıştık:
- Başlangıçta ben bir yol kaydırma çubukları devreden olması gerektiğini düşündü. Ama bunu yapmanın bir yolunu bulamadım.
- Sonra PreferredSizeProperty değiştirerek tablonun boyutunu değiştirmeye çalıştı:
table.setPrefHeight()
Ama tablo ne kadar büyük herhangi bir bilgi bulamıyorum.table.setPrefHeight(USE_COMPUTED_SIZE);
, beklediğim sonucu almadı. Daha sonra gerekli yüksekliği kendim hesaplamayı denedim, ancak tek tek satırların yüksekliğini belirlemenin herhangi bir yolunu bulamadım. Daha fazla bilgi için: http://www.microsoft.com/downloads/index.aspx?displaylang=tr Özel TableCell'in güncelleme yöntemi içindethis.getTableRow().getHeight()
'u çağırmak NullPointerExceptions ile sonuçlanır. Null'a karşı işaretlendiğinde, hala 0 olur!TableRow<T> tr = this.getTableRow(); if (tr != null) { System.out.println(tr.getHeight()); }
Oldukça sinirli, ben bu bilmecik özel TableCells noktasını sınırlar
table.setFixedCellSize(20);
arayarak, satır yüksekliğini düzeltmek karar verdi, ama ben başka türlü bir ilerleme olmadı. Ancak, tablo yüksekliği aynı zamanda, sabit bir satır yüksekliği ile çarpılan satırların sayısına eşit değildir, çünkü tablo başlığı dikkate alınmalıdır. Ve tablo üstbilgisine erişemedim veya tablo üstbilgileri boyutunu/yüksekliğini sormadım.
Yani bunu birlikte tıkıştırdınız: ListView -> ListCell -> TableView? Bu birçok düzeyde yanlıştır. Nereden başlayacağımı bilmiyorum. Kullanıcı Arabirimini farklı bileşenlerle yeniden yazmanızı kesinlikle öneririm. ListView ve TableView her ikisi de büyük miktarda veri görüntülemek ve böylece çocuklarını (hücreleri) sanallaştırılmış bir şekilde düzenlemek anlamına gelir. ListView grafik olarak bir TableView içeren tek bir soru görüntülenmesi anlamına gelmez. – eckig
A Soru, bir alt bileşeni olarak TableView kullanan özel bir bileşen tarafından bastırılır. Her soru kendi içinde bir ListView'de görüntülenecek bir ListCell'tir. TableView, benim durumumda büyük değil: 1 ile 10 satır arasında bir şey içerebilir. Katılıyorum: Bir satır için biraz anlamsız görünüyor, ancak birkaç satır gerekiyorsa, bunun nesi yanlış görmedim. – thorwinn
Yapmak istediğiniz şey oldukça zor olacak (eğer mümkünse). Bir 'TableView' düzeni için kullanılmalıdır, burada yapmaya çalıştığınız şey etkilidir. Bir tablo görünümünün (yeniden boyutlandırılabilir sütunlar, sürüklenebilir sütunlar, üstbilgi tıklaması ile sıralama, vb.) Herhangi bir işlevine ihtiyacınız var mı? Değilse, bir 'TableView' yerine hücreyi görüntülemek için bir düzen bölmesi (ör. "GridPane") kullanmak daha iyi olabilir. –