如何实现滚动条的自动滚动到textarea的末尾

bluedream2003 2003-04-29 04:35:47
我做了个聊天室,在textarea里放置了Jscrollpane,在收到信息打印到textarea上的时候,当textarea满屏时滚动条不能自动滚动,要用户自己滚动才可以看到信息,很不方便,请问各位高手应该怎么做??
...全文
495 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
newman0708 2003-05-01
  • 打赏
  • 举报
回复
谢谢我有什么用,把分数结吧!
cyicecream 2003-04-30
  • 打赏
  • 举报
回复
楼主,我的已经搞定了,你还搞定了没?
从newman0708(nch)的例子可以解决这个问题。多想想 :)
bluedream2003 2003-04-30
  • 打赏
  • 举报
回复
ok.谢谢大家了。特别是newman0708。。谢咯
zhaoao 2003-04-29
  • 打赏
  • 举报
回复
关注!
newman0708 2003-04-29
  • 打赏
  • 举报
回复
还有,你不要用append,试试用settext!!!!!
alemjann 2003-04-29
  • 打赏
  • 举报
回复
@_@ ing
cyicecream 2003-04-29
  • 打赏
  • 举报
回复
不错的例子,明天一定能解决。下班了,收工
cyicecream 2003-04-29
  • 打赏
  • 举报
回复
呵呵,我的情况和你的一样,必须要从服务端接收信息
newman0708 2003-04-29
  • 打赏
  • 举报
回复
你根据我的程序自己变动一下,应该没有问题的。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* <p>Title: This follow is newman's writing</p>
* <p>Description: I want better writing ,instead of best one!</p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: newman0708@eastday.com</p>
* @author Newman
* @version 1.0
*/

public class ScrollFrame extends JFrame{
JPanel jPanel1 = new JPanel();
JScrollPane jScrollPane1 = new JScrollPane();
BorderLayout borderLayout1 = new BorderLayout();
JTextArea jTextArea1 = new JTextArea();
JPanel jPanel2 = new JPanel();
String str="gsdklfsdljfsdlkjfdsljfdslkfjslk\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"end sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfs\n";
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();


public ScrollFrame() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ScrollFrame scrollFrame1 = new ScrollFrame();
scrollFrame1.setSize(200,300);
scrollFrame1.show();
}
private void jbInit() throws Exception {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
jPanel1.setLayout(borderLayout1);
jTextArea1.setText(this.str );
jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jButton1.setText("end");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
jButton2.setText("start");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton2_actionPerformed(e);
}
});
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jScrollPane1, BorderLayout.CENTER);
jPanel1.add(jPanel2, BorderLayout.SOUTH);
jPanel2.add(jButton1, null);
jPanel2.add(jButton2, null);
jScrollPane1.getViewport().add(jTextArea1, null);
}

void jButton1_actionPerformed(ActionEvent e) {//end
int height=10;
Point p = new Point();
p.setLocation(0,this.jTextArea1.getLineCount()*height);
this.jScrollPane1.getViewport().setViewPosition(p);
}

void jButton2_actionPerformed(ActionEvent e) {//start
Point p = new Point(0,0);
this.jScrollPane1.getViewport().setViewPosition(p);
}
}
bluedream2003 2003-04-29
  • 打赏
  • 举报
回复
自己直接append上去就可以实现自动滚动。但一接收到其他用户的信息时。就一直不能滚动了。实在是疑惑。。。。。???
大家好好想想啊。我想得快疯了!!!
cyicecream 2003-04-29
  • 打赏
  • 举报
回复
呵呵,如此的效果是不行的,触动滚动条后就没办法自动了。
我也想过,不过没实现,关注~~~~~
newman0708 2003-04-29
  • 打赏
  • 举报
回复
133.可以将光标定位于指定的位置(滚动效果)
this.jTextArea2 .setCaretPosition(0);
cowboy1114 2003-04-29
  • 打赏
  • 举报
回复
//我的好象可以自动滚动,你看一下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ScrollApp
{
public static void main(String[] args)
{
ScrollFrame frame=new ScrollFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}

class ScrollFrame extends JFrame
{
public ScrollFrame()
{

setTitle("Scroll Demo");
setSize(400,500);

Container contentPane=getContentPane();

show=new JTextArea(20,10);
JScrollPane pane=new JScrollPane(show);

addText=new JButton("ADD TEXT");

addText.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
show.append("gsdklfsdljfsdlkjfdsljfdslkfjslk\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds\n"+
"sdfjsdkfjsdlkjfkssdjfkdsfjdksjfksdsdfdssdfsdds");
}
});

contentPane.add(pane,BorderLayout.CENTER);
contentPane.add(addText,BorderLayout.SOUTH);




}

JButton addText;
JTextArea show;
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧