2012-08-18 26 views
6

JTextArea bir JPanel (BoxLayout) üzerinde var. Ayrıca JPanel'in geri kalanını dolduran kutu dolgusuna sahibim. JTextArea'mın tek satır yüksekliğiyle başlamasına ihtiyacım var (bunu başarabilirim) ve gerektiğinde genişletip küçültebilirim.JTextArea word wrap yeniden boyutlandırma

Word wrap etkinleştirildi, sadece yeni satır eklendiğinde/kaldırıldığında yüksekliğini ayarlamak için ihtiyacım var.

documentListener ve getLineCount() ile denedim, ancak wordwrap-newlines'ı tanımıyor.

Mümkünse yazı tipleriyle uğraşmaktan kaçınmak istiyorum.

Ve NO SCROLL PANES. JTextArea'nın her zaman tam olarak görüntülenmesi önemlidir.

cevap

13

JTextArea oldukça belirli bir yan etkiye sahiptir, doğru koşullarda, kendi isteğiyle büyüyebilir. Basit bir iki satırlı metin editörü (her satır için kısıtlı karakter uzunluğunda, iki satırlık bir çizgi ile) oluşturmaya çalışırken kazayla karşılaştım ...

Temel olarak, doğru düzen yöneticisi, bu bileşen göz önüne alındığında bileşen boyutunu değiştirdiğinde eğer, Şimdi ilaveten

I'm so smallLook at me grow

, izlemek bir ComponentListener kullanmak isteyebilirsiniz ... aslında mantıklı ama sürpriz götürdü - bu kendi isteğiyle büyüyebilir İlgilendiğin şey bu ...

public class TestTextArea extends JFrame { 

    public TestTextArea() { 

     setLayout(new GridBagLayout()); 

     JTextArea textArea = new JTextArea(); 
     textArea.setColumns(10); 
     textArea.setRows(1); 
     textArea.setLineWrap(true); 
     textArea.setWrapStyleWord(true); 

     add(textArea); 

     setSize(200, 200); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setVisible(true); 

     textArea.addComponentListener(new ComponentAdapter() { 

      @Override 
      public void componentResized(ComponentEvent ce) { 

       System.out.println("I've changed size"); 

      } 

     }); 

    } 


    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     new TestTextArea(); 
    } 

} 
İlgili konular