[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.newcomer] Re: Getting scroll pane to display bottom of text (using Swing)
|
In article <djimkv$9c8$1@xxxxxxxxxxxxxxxx>, yaofahua@xxxxxxxxxxx (JACK
YAO) wrote:
> *From:* JACK YAO <yaofahua@xxxxxxxxxxx>
> *Date:* Mon, 24 Oct 2005 21:12:59 +0800
>
> Peter Toye wrote:
> > In article <dj86ss$pj6$1@xxxxxxxxxxxxxxxx>, yaofahua@xxxxxxxxxxx
> > (JACK YAO) wrote:
> >
> >> public class test extends JFrame implements ActionListener {
> >> JTextArea ta = new JTextArea(10, 10);
> >> int i = 0;
> >> JPanel p = new JPanel();
> >> JScrollPane sp = new JScrollPane(ta);
> >> public test() {
> >> p.add(sp);
> >> JButton btn = new JButton("test");
> >> btn.addActionListener(this);
> >> p.add(btn, BorderLayout.NORTH);
> >> this.add(p);
> >> pack();
> >> setVisible(true);
> >> }
> >> public void actionPerformed(ActionEvent e) {
> >> new AddThread().start();
> >> }
> >> class AddThread extends Thread {
> >> public void run() {
> >> for (int i = 0; i < 100; i++) {
> >> ta.append("line :" + i + "\n");
> >> //JScrollBar sb = sp.getVerticalScrollBar();
> >> //sb.setValue(sb.getMaximum());
> >> try {
> >> Thread.sleep(100);
> >> } catch (InterruptedException e) {
> >> e.printStackTrace();
> >> }
> >> }
> >> }
> >> }
> >> public static void main(String[] args) {
> >> new test();
> >> }
> >> }
> > Jack,
> >
> > I've tried your program now, but modified it to append more than one
> > line. When you comment out the lines the slider bar stays at the top.
> > When you don't, last appended line isn't visible.
> >
> > I'm obviously going to have to experiment more with my program, and
> > learn about threading.
> >
> > On a wider point, this seems to be an issue which makes Swing
> > difficult to use - why isn't the obvious behaviour of the slider bar
> > on append made a default?
> >
> > Peter
> Peter, did you solve your problem ? I change the for loop to :
> //**************************************************************
> for(int i=0;i<100;i++) {
> System.out.println(sb.getMaximum());//1
>
> ta.append("line :" + i + "\n");
> sleep(500);
> System.out.println(sb.getMaximum());//2
>
> ta.append("line :" + i + "\n");
> sleep(500);
> System.out.println(sb.getMaximum());//3
>
> ta.append("line :" + i + "\n");
> sleep(500);
> System.out.println(sb.getMaximum());//4
> }
> //***************************************************************
> To my surprise, 3 4 which are the last two append are the same value. I
> think this test has no thread factor.
> --
>
> JACK YAO, Beijing, China
>
Jack,
This is what I used for my test with threading. I found that the slider
doesn't go all the way down to the bottom after the multi-line append. I
think that I may bring this up as a Java bug report, but as a newbie I
wanted to be sure that it wasn't just me.
Peter
class AddThread extends Thread {
public void run() {
for (int i = 0; i < 10; i++) {
ta.append("Start of append\n");
ta.append("line :" + i + "\n");
ta.append("End of append\n");
JScrollBar sb = sp.getVerticalScrollBar();
sb.setValue(sb.getMaximum());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}