java swing JScrollPane 滚动条问题。先给200,回答对再加。详细如下问题补充 200

1、如何获取到当前滚动条的位置?要求只要滚动条位置改变就System.out.print()打印出它的所在位置。例如一运行滚动条就如下图位置:2、如何指定滚动位置,意思是... 1、如何获取到当前滚动条的位置?要求 只要滚动条位置改变就System.out.print()打印出它的所在位置。例如一运行滚动条就如下图位置:
2、如何指定滚动位置,意思是说初始化时就不要它在顶部,而是我想让它在哪它就在哪
这是我的大部分代码(可以运行):
import java.awt.BorderLayout;
import java.awt.Point;

import javax.swing.*;

public class ScrollingToVisible extends JFrame {
JTextArea ta = null;
JLabel pic;
JScrollPane scroller;
public ScrollingToVisible() {
super("Test");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
ta = new JTextArea(10, 40);
pic=new JLabel();
pic.setIcon(new ImageIcon("sky.jpg"));
pic.setText("fds");
scroller = new JScrollPane(ta);
//scroller = new JScrollPane(pic); //这是关键所在,我的图片是很常的,我要它自动

//scroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 隐藏滚动条
//scroller.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_NEVER); 隐藏滚动条

getContentPane().add(scroller, BorderLayout.CENTER);
setBounds(200,10,410,400);
setVisible(true);

Thread thread = new Thread() {
public void run() {
int i=0;
while (true) {
append(" long "+i++);
try {
Thread.sleep(200);
} catch (InterruptedException exp) {}
}
}
};
thread.start();
}

public void append(String text) {
ta.append(text);
ta.append("\n");
ta.setCaretPosition(ta.getDocument().getLength());
}

public static void main(String[] args){

new ScrollingToVisible();
}

}
展开
 我来答
百度网友0014b1c
2012-06-12 · 超过29用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:82.8万
展开全部
为什么不用JSlider,相对于SCrollbar方便很多啊。

刻度方面也可以进行调整。

同时可以直接 jslh.getValue() 获取位置。

jslh=new JSlider(....)水平

jslv=new JSlider(....)垂直
百度网友845f74e61
2012-06-12 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1602万
展开全部
代码如下
scrollBar.setValue(600); 可以改变初始值,但效果不是很理想。
原因暂时没有找到,我认为是初始化的时候,容器并没有初始化出来那么大的长度。
只在这些容器装载完成以后,才能知道滚动条的确定长度
------------------------------------------------------------
import java.awt.event.AdjustmentEvent;

public class AppDemo extends JFrame implements AdjustmentListener {

public AppDemo() {
getContentPane().setLayout(null);

JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(12, 46, 418, 217);
getContentPane().add(scrollPane);

JTextPane textPane = new JTextPane();
for (int row = 1; row <= 100; row++) {
textPane.setText(textPane.getText() + "" + row + "\n");
}
scrollPane.setViewportView(textPane);
JScrollBar scrollBar = scrollPane.getVerticalScrollBar();
scrollBar.addAdjustmentListener(this);

scrollBar.setValue(600);

setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(450, 300);
setVisible(true);
}

public static void main(String[] args) {
new AppDemo();
}

public void adjustmentValueChanged(AdjustmentEvent event) {
System.out.println(event.getValue());
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泰然还素净的海鸥H
2012-06-12 · TA获得超过332个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:135万
展开全部
看看你要的是不是这种图片自动滚动的效果。有问题M我QQ353314220

public class ScrollingToVisible extends JFrame implements Runnable {
private static final long serialVersionUID = -5577320945504401992L;
private JLabel pic;
private JScrollPane scroller;
private boolean flag = false;
private int postion = 0;

public ScrollingToVisible() {
super("Test");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
scroller = new JScrollPane();
pic = new JLabel();
pic.setIcon(new ImageIcon("460.jpg"));

pic.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) { // 通过双击图片控制暂停、滚动
flag = flag ? false : true;
}
if (e.getClickCount() == 3) { // 通过三击图片返回最上层
scroller.getVerticalScrollBar().setValue(0);
flag = false;
postion = 0;
}
}

});
scroller.setViewportView(pic);
getContentPane().add(scroller, BorderLayout.CENTER);
setBounds(200, 10, 410, 400);
setVisible(true);
new Thread(this).start();
}

public static void main(String[] args) {
new ScrollingToVisible();
}

public void run() {
while (true) {
if (flag) {
try {
Thread.sleep(200);
scroller.getVerticalScrollBar().setValue(10 * postion++);
} catch (InterruptedException exp) {}
}
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jy01378246
2012-06-12 · TA获得超过194个赞
知道答主
回答量:159
采纳率:0%
帮助的人:31.3万
展开全部
一开始运行的时候没有滚动条啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式