應將JTextArea置於JScrollPanel中
若要使只有垂直滾動條而沒有水平滾動條,使用JTextArea.setLineWrap(true),自動換行。
文本換行代碼片段如下:
JTextArea adressTextArea = new JTextArea(11, 35); //設置自動換行 adressTextArea.setLineWrap(true); //定義帶滾動條的panel,並將JTextArea存入到panel中,使textarea具有滾動條顯示功能。 JScrollPane scrollpane = new JScrollPane(adressTextArea); //取消顯示水平滾動條 scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); //顯示垂直滾動條 scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
以下為個人測試畫的一個簡單頁面,僅供參考:
1 package JFrameTest; 2 3 import java.awt.BorderLayout; 4 5 @SuppressWarnings("all") 6 public class ApplyCertTest extends JFrame { 7 8 private JPanel contentPane; 9 10 /** 11 * Launch the application. 12 */ 13 public static void main(String[] args) { 14 EventQueue.invokeLater(new Runnable() { 15 public void run() { 16 try { 17 ApplyCertTest frame = new ApplyCertTest(); 18 frame.setVisible(true); 19 frame.setTitle("申請新許可"); 20 frame.getContentPane().setLayout(null); 21 } catch (Exception e) { 22 e.printStackTrace(); 23 } 24 } 25 }); 26 } 27 28 /** 29 * Create the frame. 30 */ 31 public ApplyCertTest() { 32 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 33 //setResizable決定了窗體是否可以放大。true則可以最大化,false則不可變 34 setResizable(false); 35 setBounds(100, 100, 510, 520); 36 contentPane = new JPanel(); 37 contentPane.setLayout(new FlowLayout(FlowLayout.LEFT)); 38 39 getContentPane().add(contentPane, BorderLayout.NORTH); 40 41 JLabel lblNewLabel = new JLabel(" 生成新的許可需填寫下列信息:"); 42 lblNewLabel.setLabelFor(contentPane); 43 contentPane.add(lblNewLabel); 44 45 JPanel lPanel = new JPanel(); 46 lPanel.setBorder (BorderFactory.createTitledBorder ("申請文件信息")); 47 lPanel.setLayout(new BorderLayout(5, 0)); 48 getContentPane().add(lPanel); 49 50 //用戶名稱 51 JPanel mlPanel = new JPanel(); 52 mlPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 53 JLabel userName = new JLabel("用戶名稱: "); 54 mlPanel.add(userName); 55 JTextField userTextField = new JTextField(35); 56 mlPanel.add(userTextField); 57 58 //公司名稱 59 mlPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 60 JLabel companyName = new JLabel("公司名稱: "); 61 mlPanel.add(companyName); 62 JTextField companyTextField = new JTextField(35); 63 mlPanel.add(companyTextField); 64 lPanel.add(mlPanel); 65 66 //電話號碼 67 mlPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 68 JLabel phone = new JLabel("電話號碼: "); 69 mlPanel.add(phone); 70 JTextField phoneTextField = new JTextField(35); 71 mlPanel.add(phoneTextField); 72 lPanel.add(mlPanel); 73 74 //電子郵件 75 mlPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 76 JLabel email = new JLabel("電子郵件: "); 77 mlPanel.add(email); 78 JTextField emailTextField = new JTextField(35); 79 mlPanel.add(emailTextField); 80 lPanel.add(mlPanel); 81 82 //聯系地址 83 mlPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 84 JLabel adress = new JLabel("聯系地址: "); 85 mlPanel.add(adress); 86 //JTextField adressTextField = new JTextField(35); 87 JTextArea adressTextArea = new JTextArea(11, 35); 88 //設置自動換行 89 adressTextArea.setLineWrap(true); 90 //定義帶滾動條的panel,並將JTextArea存入到panel中,使textarea具有滾動條顯示功能。 91 JScrollPane scrollpane = new JScrollPane(adressTextArea); 92 //取消顯示水平滾動條 93 scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 94 //顯示垂直滾動條 95 scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 96 mlPanel.add(scrollpane); 97 lPanel.add(mlPanel); 98 99 //適用IP 100 mlPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 101 JLabel ipLabel = new JLabel("適用IP: "); 102 mlPanel.add(ipLabel); 103 JTextField ipTextField = new JTextField(35); 104 mlPanel.add(ipTextField); 105 lPanel.add(mlPanel); 106 107 //適用mac地址 108 mlPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 109 JLabel macLabel = new JLabel("適用mac地址:"); 110 mlPanel.add(macLabel); 111 JTextField macTextField = new JTextField(35); 112 mlPanel.add(macTextField); 113 lPanel.add(mlPanel); 114 115 //使用時限(天) 116 mlPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 117 JLabel dayLimit = new JLabel("使用時限(天): "); 118 mlPanel.add(dayLimit); 119 JTextField dayLimitTextField = new JTextField(35); 120 mlPanel.add(dayLimitTextField); 121 lPanel.add(mlPanel); 122 123 JPanel bPanel = new JPanel(); 124 bPanel.setLayout(new FlowLayout(FlowLayout.RIGHT)); 125 JButton saveButton = new JButton("保存"); 126 JButton resetButton = new JButton("重置"); 127 JButton quitButton = new JButton("退出"); 128 bPanel.add(saveButton); 129 bPanel.add(resetButton); 130 bPanel.add(quitButton); 131 132 getContentPane().add(bPanel, BorderLayout.SOUTH); 133 134 } 135 }