zoukankan      html  css  js  c++  java
  • Java Swing 如何添加输入文字并且可以滚动的文本框?( JTextArea ,JScrollPane的使用)

    准备:

    JTextArea 文本区,一个可以输入文字的文本框

    常用方法:

                1.setText(String t)设置文本区中显示的文本

                2.getText() 获取文本区中显示的文本

    JScrollPane 滑动窗格容器,一般放入长度或者宽度特别长的控件,通过滑动来查看控件中由于太长而显示不出来的部分

    首先创建一个可以输入文本:

     1 package swing;
     2 
     3 import java.awt.Dimension;
     4 import java.awt.EventQueue;
     5 
     6 import javax.swing.JButton;
     7 import javax.swing.JFrame;
     8 import javax.swing.JScrollPane;
     9 import javax.swing.JTextArea;
    10 import java.awt.BorderLayout;
    11 
    12 public class MyTextArea {
    13 
    14     private JFrame frame;
    15     private JTextArea textArea;
    16 
    17     /**
    18      * Launch the application.
    19      */
    20     public static void main(String[] args) {
    21         EventQueue.invokeLater(new Runnable() {
    22             public void run() {
    23                 try {
    24                     MyTextArea window = new MyTextArea();
    25                     window.frame.setVisible(true);
    26                 } catch (Exception e) {
    27                     e.printStackTrace();
    28                 }
    29             }
    30         });
    31     }
    32 
    33     /**
    34      * Create the application.
    35      */
    36     public MyTextArea() {
    37         initialize();
    38     }
    39 
    40     /**
    41      * Initialize the contents of the frame.
    42      */
    43     private void initialize() {
    44         
    45         //创建一个对话框
    46         frame = new JFrame();
    47         //创建一个文本区
    48         textArea = new JTextArea();
    49         //将文本区添加到弹出框框
    50         frame.add(textArea);
    51         //设置弹出框框
    52         frame.setLocation(200,50);
    53         frame.setSize(620,660);
    54         frame.setVisible(true);
    55         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    56         
    57         //给文本区设置显示值
    58         textArea.setText("汤老师好!");
    59         //获取文本区的值并打印到控制台
    60         System.out.println(textArea.getText());
    61     }
    62 
    63 }
    View Code

    运行程序就可以在弹出的框框中输入文字了。但是这里有个问题:如果我输入的内容特别多,例如有1000个字。这个文本区控件只会显示一行!为了让文本区控件能够自动换行,需要加上下面这行代码:

    //设置当文本字长度超过frame的宽度时自动换行()
    textArea.setLineWrap(true);

    这些可以自动换行了,但是问题又来了。如果我的文字特别多,多到弹出的框框都显示不下了怎么办?这时就需要将这个文本区控件textArea放入JScrollPane控件中,让它能够“滚动起来”。这样就能通过滚动来查看文本区中显示不下的内容了。将initialize()方法修改为如下代码:

     1 private void initialize() {
     2         
     3         //创建一个对话框
     4         frame = new JFrame();
     5         //创建一个文本区
     6         textArea = new JTextArea();
     7         //设置当文本字长度超过frame的宽度时自动换行()
     8         textArea.setLineWrap(true);
     9         
    10         //创建一个滑动窗格容器,并将刚刚创建的文本区放入其中,当文本区textArea中的内容超过弹出框框frame的长度时。滑动就可以查看没显示出来的内容
    11         JScrollPane scrollpane=new JScrollPane(textArea);
    12         //将滑动窗格容器添加到弹出框框
    13         frame.add(scrollpane);
    14         //设置弹出框框
    15         frame.setLocation(200,50);
    16         frame.setSize(620,660);
    17         frame.setVisible(true);
    18         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    19         
    20         //给文本区设置显示值
    21         textArea.setText("汤老师好!");
    22         //获取文本区的值并打印到控制台
    23         System.out.println(textArea.getText());
    24 }
    View Code

    有的时候还需要设置文本区控件中显示的值,通过setText(String t)方法实现。如果要获取文本区中显示的值则使用getText()方法。

    1 //给文本区设置显示值
    2 textArea.setText("汤老师好!");
    3 //获取文本区的值并打印到控制台
    4 System.out.println(textArea.getText());
    View Code

    完整的代码:

     1 package swing;
     2 
     3 import java.awt.Dimension;
     4 import java.awt.EventQueue;
     5 
     6 import javax.swing.JButton;
     7 import javax.swing.JFrame;
     8 import javax.swing.JScrollPane;
     9 import javax.swing.JTextArea;
    10 import java.awt.BorderLayout;
    11 
    12 public class MyTextArea {
    13 
    14     private JFrame frame;
    15     private JTextArea textArea;
    16 
    17     /**
    18      * Launch the application.
    19      */
    20     public static void main(String[] args) {
    21         EventQueue.invokeLater(new Runnable() {
    22             public void run() {
    23                 try {
    24                     MyTextArea window = new MyTextArea();
    25                     window.frame.setVisible(true);
    26                 } catch (Exception e) {
    27                     e.printStackTrace();
    28                 }
    29             }
    30         });
    31     }
    32 
    33     /**
    34      * Create the application.
    35      */
    36     public MyTextArea() {
    37         initialize();
    38     }
    39 
    40     /**
    41      * Initialize the contents of the frame.
    42      */
    43 private void initialize() {
    44         
    45         //创建一个对话框
    46         frame = new JFrame();
    47         //创建一个文本区
    48         textArea = new JTextArea();
    49         //设置当文本字长度超过frame的宽度时自动换行()
    50         textArea.setLineWrap(true);
    51         
    52         //创建一个滑动窗格容器,并将刚刚创建的文本区放入其中,当文本区textArea中的内容超过弹出框框frame的长度时。滑动就可以查看没显示出来的内容
    53         JScrollPane scrollpane=new JScrollPane(textArea);
    54         //将滑动窗格容器添加到弹出框框
    55         frame.add(scrollpane);
    56         //设置弹出框框
    57         frame.setLocation(200,50);
    58         frame.setSize(620,660);
    59         frame.setVisible(true);
    60         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    61         
    62         //给文本区设置显示值
    63         textArea.setText("汤老师好!");
    64         //获取文本区的值并打印到控制台
    65         System.out.println(textArea.getText());
    66 }
    67 }
    View Code

    作业:

    1.复制完整代码到eclipse中,但是initialize()方法部分手动输入,变敲边理解代码。

    2.完成一个程序要求

      1.包含一个button,个可以输入的文本框A 和B

      2.在B中输入文字后,点击button 文字就出现在A中,并且还要在控制台输出B中的文字,最后清空B中的输入

      3.当A或者B中内容太多时,可以有滚动效果,查看显示不了的内容 

    3.理解以下代码

     1 package swing;
     2 
     3 import java.awt.Button;
     4 import java.awt.Dimension;
     5 import java.awt.EventQueue;
     6 
     7 import javax.swing.JButton;
     8 import javax.swing.JFrame;
     9 import javax.swing.JScrollPane;
    10 import javax.swing.JTextArea;
    11 import java.awt.BorderLayout;
    12 
    13 public class MyTextArea {
    14 
    15     private JFrame frame;
    16     
    17 
    18     /**
    19      * Launch the application.
    20      */
    21     public static void main(String[] args) {
    22         EventQueue.invokeLater(new Runnable() {
    23             public void run() {
    24                 try {
    25                     MyTextArea window = new MyTextArea();
    26                     window.frame.setVisible(true);
    27                 } catch (Exception e) {
    28                     e.printStackTrace();
    29                 }
    30             }
    31         });
    32     }
    33 
    34     /**
    35      * Create the application.
    36      */
    37     public MyTextArea() {
    38         initialize();
    39     }
    40 
    41     /**
    42      * Initialize the contents of the frame.
    43      */
    44     private void initialize() {
    45         
    46         //创建一个对话框
    47         frame = new JFrame();
    48         
    49         //创建一个按钮
    50         JButton jButton = new JButton();
    51         jButton.setBounds(0, 0, 620, 638);
    52         //设置jButton中显示的文本
    53         jButton.setText("1233336666666666666666666666666666666666666666");
    54         //设置按钮高为5000 宽为620
    55         jButton.setPreferredSize(new Dimension(620,5000)); 
    56         //创建一个滑动窗格容器,将按钮jButton放入其中,
    57         JScrollPane scrollpane=new JScrollPane(jButton);
    58         //将滑动窗格容器添加到弹出框框
    59         frame.add(scrollpane);
    60         //设置弹出框框
    61         frame.setLocation(200,50);
    62         frame.setSize(620,660);
    63         frame.setVisible(true);
    64         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    65         
    66     }
    67 
    68 }
    View Code

      

  • 相关阅读:
    java中native的用法
    用uWSGI和Nginx部署Flask项目
    elasticsearch之使用Python批量写入数据
    mysql 远程访问
    Chrome扩展及应用开发
    jQuery ajax
    Chrome扩展及应用开发-储存数据
    Chrome扩展及应用开发-扩展页面间的通信
    Python3 将本地时间转换成指定时区时间
    python如何编译py文件生成pyc、pyo、pyd以及如何和C语言结合使用
  • 原文地址:https://www.cnblogs.com/AbsurdFantasy/p/4756300.html
Copyright © 2011-2022 走看看