2017-05-03 112 views
0
package Rainbow; 

import javax.swing.*; 
import java.awt.*; 

public class Entry 
{ 
    public static void main(String[] Q) 
    { 
     JFrame R = new JFrame(); 
     JPanel P = new JPanel() 
     { 
      public Dimension getMaximumSize() 
      { return new Dimension(Integer.MAX_VALUE,getMinimumSize().height); } 
     }; 
     P.setLayout(new BoxLayout(P,BoxLayout.Y_AXIS)); 
     JTextArea A = new JTextArea(
       "VERYLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONG"); 
     A.setEditable(false); 
     A.setLineWrap(true); 
     P.add(new Label("Text")); 
     P.add(A); 
     JScrollPane S = new JScrollPane(P); 
     R.add(S); 
     R.setSize(300,300); 
     R.setLocationRelativeTo(null); 
     R.setVisible(true); 
    } 
} 

它在啓動時看起來如此。 StartUpJava |在JScrollPane中適合父寬度

減小幀的大小後。 Reduce 裏面的JTextArea不會減小它的大小。

我在這裏使用JTextArea,因爲它似乎是在組件上換行的最簡單方法。那麼如何解決它?還是有另一種方法來做同樣的事情?

回答

0

您還需要調整TextArrea的大小。以下是您的問題的一些相關示例:Java JTextArea that auto-resizes and scrolls

實施例描述了其中的JPanel使用以及如何做到這一點:

JPanel panel = new JPanel(); 
panel.setLayout(new BorderLayout()); //give your JPanel a BorderLayout 

JTextArea text = new JTextArea(); 
JScrollPane scroll = new JScrollPane(text); //place the JTextArea in a scroll pane 
panel.add(scroll, BorderLayout.CENTER); //add the JScrollPane to the panel 
// CENTER will use up all available space