当前位置: 代码迷 >> J2SE >> JTextArea中文本有关问题
  详细解决方案

JTextArea中文本有关问题

热度:231   发布时间:2016-04-24 00:38:22.0
JTextArea中文本问题
为什么JTextArea加到JScrollPane中当文本宽度超过自身的宽度没有自动显示水平滚动条
文本长度超过自身的长度垂直滚动条没有随之滚动
Java code
ReceivejPanel = new JPanel();AnchorLayout ReceivejPanelLayout = new AnchorLayout();                    getContentPane().add(ReceivejPanel, BorderLayout.NORTH);                    ReceivejPanel.setLayout(ReceivejPanelLayout);                    ReceivejPanel.setPreferredSize(new java.awt.Dimension(492, 173));{    ReceivejLabel = new JLabel();    ReceivejPanel.add(ReceivejLabel, new AnchorConstraint(26, 208, 135, 1, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL));AnchorLayout ReceivejLabelLayout = new AnchorLayout();    ReceivejLabel.setLayout(ReceivejLabelLayout);    ReceivejLabel.setText("\u63a5\u6536\u6d88\u606f\u7a97\u53e3");    ReceivejLabel.setFont(new java.awt.Font("KaiTi_GB2312",3,16));    ReceivejLabel.setForeground(new java.awt.Color(0,255,255));    ReceivejLabel.setPreferredSize(new java.awt.Dimension(102, 19));}{    ReceivejScrollPane = new JScrollPane();    ReceivejPanel.add(ReceivejScrollPane, new AnchorConstraint(170, 1001, 997, 1, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL));    ReceivejScrollPane.setPreferredSize(new java.awt.Dimension(492, 143));    {      ReceivejTextArea = new TextAreacvp();                                   ReceivejScrollPane.getViewport().add(ReceivejTextArea,null);    ReceivejTextArea.setPreferredSize(new java.awt.Dimension(474, 141));    ReceivejTextArea.setEditable(false);    ReceivejTextArea.setBackground(new java.awt.Color(192,192,192));    ReceivejTextArea.setForeground(new java.awt.Color(0,0,255));    ReceivejTextArea.setLineWrap(true);    }}


------解决方案--------------------
你没有给你的textarea加上滚动条嘛 这些都是要手动设置的
------解决方案--------------------
滚动条的水平条没设置
------解决方案--------------------
把这一句:
Java code
 ReceivejScrollPane.getViewport().add(ReceivejTextArea,null);
------解决方案--------------------
两个的位置大小设置成一样的,还有把JScollPanel设置成是水平滚动的还是垂直滚动的.
------解决方案--------------------
我是用一个线程,固定时间间隔将光标挪到文本末尾实现滚动的
Java code
TimerTask task = new TimerTask() { // 实现结果自动滚屏    @Override    public void run() {        resultArea.setSelectionStart(resultArea.getText().length());    }};Timer timer = new Timer();timer.schedule(task, 0, 1000);
------解决方案--------------------


应该改成:ReceivejScrollPane.getViewport().add(ReceivejTextArea);试试。以前我也是这么写的没出现过楼主的问题。如果不行的话,我在想想
------解决方案--------------------
定义的变量首字母最好小写,这样不容易阅读。楼主之前是弄C++的?
------解决方案--------------------
ReceivejScrollPane = new JScrollPane();
ReceivejScrollPane.getViewport().add(ReceivejTextArea);
这样就可以了
------解决方案--------------------
很简单,在每次添加完文本后调用:
JScrollBar bar = ReceivejScrollPane.getVerticalScrollBar();
bar.setValue(bar.getMaximum());
楼主试试看.
------解决方案--------------------
学习
------解决方案--------------------
唉~~你这些代码是使用可视化工具生成的吧~~可以说,垃圾代码非常之多……很乱
ReceivejTextArea.setPreferredSize(new java.awt.Dimension(474, 141));
问题在这里。

一定要要设置大小的话,给滚动视图设置大小,不要给里面的设置。