应将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 }