当2个jScrollPane都出现上下滚动条的时候,怎么实现两个jScrollPane怎么关联上下同步滚动,求一段实例代码...谢谢
解决方案 »
- 怎样返回一个String[]对象数组
- tcp包校验问题,java?
- java如何启动有界面的windows进程?
- 大家没有事情做了 怎么。“ java太简单,学java全是垃圾,天天用别人的API,自己就是个民工 ”这样的破帖子顶来顶去的 ,没有事情吃饱称的啊
- 一个简单的问题:常用的lang,awt,net等这些jdk自带的包是jdk里哪个文件(或路径)?
- 如何实现动态数组?
- 请教java代码里的一个小问题?
- 怎么获得.exe文件的图标,把它显示在JLabel上----------着急!!!
- 关于static成员和JRE的问题
- 贪吃蛇中黑体的移动
- Java Swing中如何加入MDI窗体,急啊!40分
- 如何把GUID放入一个16位的二进制上。又如何读取一个16位的二进制回GUID
将两个 JScrollPane 的 JScrollBar 设成同一个JScrollBar
这个方法的好处是:完美的联动,不会有任何需要你自己去控制和计算的
这个方法的缺陷是:只能看到一个滚动条方法二:
分别重写两个 JScrollPane 的 JScrollBar 的 setValues 方法,去分别设置另外一个 JScrollBar 的值,比如调用另一个 JScrollBar 的 setValue 方法,注意不是调用 setValues 方法,否则就是循环调用,要死循环了。
这个方法的好处是:两个滚动条都看得到
这个方法的缺陷是:可能有的时候不能完美的实现联动,尤其是个JScrollPane 的大小不一样的时候,可能需要自己去试验去处理。方法三:
方法二的一个变种,
你只重写第一个JScrollBar 的 setValues 方法,
设置自身和另一个 JScrollBar 的 Values
即调用 super.setValues() 和 bar2.setValues()
另一个 JScrollBar 不重写 setValues 方法,而是改为监听滚轮事件,箭头点击事件,滚动条拖动事件,在这些事件里,调用 bar1.setValues()
这样就没有循环调用了
这个方法的好处是:两个滚动条都看得到,且处理效果比方法二略好一些
这个方法的缺陷是:可能需要重写 JScrollBar 的 UI 类,不然你也无法获得滚动条上的箭头的引用,无法增加监听器
JScrollBar2.setJScrollBar();
...我表示我比较搓,写了那么多次
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;public class JScrollPaneSynDemo extends JFrame {
JScrollPane scrollPane1;
JScrollPane scrollPane2;
JPanel mainPane;
JScrollPaneSynDemo() {
setSize(500, 240);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainPane = new JPanel();
scrollPane1 = new JScrollPane(new JTextArea("1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15"));
scrollPane2 = new JScrollPane(new JTextArea("a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no"));
scrollPane1.setPreferredSize(new Dimension(200, 200));
scrollPane2.setPreferredSize(new Dimension(200, 200));
mainPane.add(scrollPane1);
mainPane.add(scrollPane2);
scrollPane2.setVerticalScrollBar(scrollPane1.getVerticalScrollBar());
setContentPane(mainPane);
setVisible(true);
} public static void main(String... args) {
new JScrollPaneSynDemo();
}
}方法一的实现