由编写计算器中使用TextArea遇到问题而产生的思考
关于TextArea的问题,是在运用Java编写仿照win10自带计算器(也就是下面图片所显示的)时出现的。大家都知道我们一般用的计算器数字都是从右至左输入的,换句话说,我们输入的位数越多,对齐部位都在最右边。但是在Java中,使用JTextArea创建的文本域对象默认是左对齐(下图中的程序初期截图中正是如此),因此在这里遇到疑问,就需要仔细学习一下TextArea的使用方法。
在百度搜索Java TextArea会看到这样一篇博文 http://blog.sina.com.cn/s/blog_63cefe150100gtek.html
以下内容转自上面这个链接;
public void insert(String s,int x)向文本区指定的位置x(文本区开始处字符的个数)插入指定文本s。
public void replaceRange(String s,int start,int end):用字符串s替换从指定位置start开始到指定位置end结束的文本。
首先摘录了两个实用性较高的方法备用。
下面进入正题,由于win10自带的计算器功能较为强大,除了最基本的加减乘除求平方根号以及内存存储外,还有进制转换汇率转换等功能,因此我的思路是先实现加减乘除求平方根号这些基本的数学运算和计算器的基本清除功能。在实现了这些功能后,我发现如果我输入的数字过多,后输入的数字会不显示在屏幕中,因为win10的计算器时右对齐的,也就是个位永远在最右边不动,而我们先输入的最高位会依次向左移动,而这个功能我是不会实现的。于是我开始求助。
我发现了这样一个方法.setAlignmentX(float a),但发现这个方法是调整组件在swing中的对齐方式,并不是调整文本域中的文本对齐。查看了很多帖子和博文也没有找到解决方法,很是苦恼。不如就推翻重头再来,学习一遍有关文本输入的相关组件
Java中我已知的可以用于文本输入输出的有TextArea,TextField,TextPane,Table这些组件,下面是先对每个组件的单独解释,紧接着会有横向比对
1.TextField
TextField是一个比较基础的组件,我认为他最大的特点之