两个jScrollPane怎么关联上下同步滚动 当2个jScrollPane都出现上下滚动条的时候,怎么实现两个jScrollPane怎么关联上下同步滚动,求一段实例代码...谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 方法一:将两个 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 类,不然你也无法获得滚动条上的箭头的引用,无法增加监听器 JScrollBar1.getJScrollBar();JScrollBar2.setJScrollBar(); JScrollBar2.setJScrollBar(JScrollBar1.getJScrollBar()); JScrollPane2.setJScrollBar(JScrollPane1.getJScrollBar());...我表示我比较搓,写了那么多次 import java.awt.Dimension;import javax.swing.JFrame;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(); }}方法一的实现 大家来找茬,题目很简单但是问题出在哪呢 string Pchar byte[]的问题 java 实用教程 求解----js中的问题 你还在用jdk1.4吗? java有没有类可以实现就如vc里那样的控件,控件可以有不同的选项,然后拖动来看不同的选项 那儿有一些小程序的源代码看 建立目录的小问题 java 安装文件 java 线程问题 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();
}
}方法一的实现