Burada basit bir Java sorusu var. Otomatik metin kaydırmayı JTextArea kullanılarak oluşturulan bir metin alanının son satırının başına kaydırmak istiyorum. Metin alanının satır başına düşen metin miktarı, metin alanının genişliğinden oldukça uzundur.Metin alanı için otomatik metin kaydırma (JTextArea) ile son satırın başlangıcına ayarlanmış düzeltme konumu
Bunu kurmak için kullandığım kod parçacığı İşte.
şimdiJTextArea textArea = new JTextArea();
DefaultCaret caret = (DefaultCaret)textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
sorun deyişle, yukarıdaki kod ile, varsayılan davranış şapka oto sonucunda, tüm metin alanının başlangıç kısmı kapsamı dışında alır, belgenin sonuna yerleştirilmiş olmasıdır . Otomatik kaydırmayı belgede son satırın başına gelmesini tercih ederim.
Burada iki ekran görüntüleri,İstediğim ilki ama ne oluyor ikinci biridir vardır, bu açıklığa kavuşturmak için.
Serin çözüm: İşte
İstediğiniz davranışı gösteren bir çalışma örneğidir! Ama burada bir sorum var. Ta.setCaretPosition (ta.getLineStartOffset (ta.getLineCount() - 1)) 'i ayarlayabileceğim herhangi bir yol var mı? Her seferinde güncellemek yerine sadece bir kez, tüm uygulama için geçerli kalması için mi? –
Ayrıca, DefaultCaret caret = (DefaultCaret) ta.getCaret() 'ı kullanırken, caret.setUpdatePolicy (DefaultCaret.ALWAYS_UPDATE); Kodunuz da bu ifadeler olmadan işe yarayacak mı? Bu konuda görüşünüz nedir? –
@JtheRocker bildiğimi değil. Metin güncellendiğinde düzeltme işareti konumu devam ediyor. Bu nedenle, bu konumun her zaman yeniden hesaplanması gerektiği anlamına gelir. JTextArea'yı genişletebilir ve setText'i geçersiz kılabilirsiniz, önce super.setText öğesini arayarak ve sonra da kartelayı konumlandırabilirsiniz. İkinci sorunuz için, bu istenen davranış ve ergonomi sorunudur. Sorduğun soruda istediğin buydu. Şimdi, aslında kaydırma bölmesinin sol alt köşesine ilerliyorsanız, başka bir şey arıyorsunuz demektir. Eğer öyleyse, SO üzerine başka bir soru göndermeyi düşünün. –