高分求助!关于Swing方面的问题

oven 2003-01-07 12:16:01
本人正在做一个聊天室程序
我在JScrollPanel中放置了一个JTextArea来显示聊天内容,我想随着聊天内容的更新,
垂直滚动条自动向下移动,也就是使聊天内容自动向上滚动,使最后一行的文字一直可以看到。
是不是JScrollPanel,JTextArea中有什么专门的方法()或者编程怎么实现呢?
十分感谢!
...全文
9 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bluesmile979 2003-01-07
在JTextArea里面有setScrollOffset,或者通过setSelectionStart,setSelectionEnd来实现。我没做过(vc里面这种方法是没有问题的),你可以试一下
回复
funpig 2003-01-07
append()比较简单
回复
exd2000 2003-01-07
append()
回复
希偌 2003-01-07
上面的方法是可行的,这是个例子,你看看
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Frame1 extends JFrame {
private JPanel contentPane;
private JLabel jLabel1 = new JLabel();
private JButton jb=new JButton("click");
private JPanel jp=new JPanel(new FlowLayout());
private JScrollPane jscr=new JScrollPane();
private JTextArea jta=new JTextArea();
public Frame1() {
super("myFrame");
this.setSize(400,300);
this.setResizable(false);
this.setLocation(this.getToolkit().getScreenSize().width/2-this.getWidth()/2,this.getToolkit().getScreenSize().height/2-this.getHeight()/2);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add("South",jp);
contentPane.add("Center",jscr);
jscr.getViewport().add(jta);
jta.setText("start\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nend");
jp.add(jb);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
click(e);
}
});
this.setSize(new Dimension(400, 300));
this.setTitle("Frame Title");
for(int i=1;i<=9;i++) {
for(int j=1;j<=i;j++) {
if(j!=1)
System.out.print(",");
System.out.print(j+"*"+i+"="+i*j);
}
System.out.println("");
}
this.setVisible(true);
}

public void click(ActionEvent e) {
this.jta.requestFocus();
this.jta.setSelectionStart(this.jta.getText().length());
this.jta.setSelectionEnd(this.jta.getText().length());
}

public static void main(String args[]) {
new Frame1();
}
}
回复
colors 2003-01-07
up
回复
oven 2003-01-07
好象上边的方法不行
是不是要将JTextArea1.SetEnable(True)有关
还有是不是和ContentPane的Layout的设置有关我设置的XYLayout
我的部分代码:
contentPane.add(jScrollPane1, null);
jScrollPane1.setAutoscrolls(true);
jScrollPane1.getViewport().add(jTextArea2,null);
jTextArea1.setLineWrap(true);
this.jTextArea1.requestFocus();
this.jTextArea1.setSelectionStart(this.jTextArea1.getText().length());
this.jTextArea1.setSelectionEnd(this.jTextArea1.getText().length());
回复
nullhue 2003-01-07
请问,为什么不用List?
回复
seawhl 2003-01-07
up
回复
希偌 2003-01-07
this.jTextArea1.requestFocus();
this.jTextArea1.setSelectionStart(this.jTextArea1.getText().length());
this.jTextArea1.setSelectionEnd(this.jTextArea1.getText().length());
回复
MagicJohn 2003-01-07
这里有一个关于scoll的例子
http://javaboutique.internet.com/Scrollup/
回复
发动态
发帖子
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
社区公告
暂无公告