2012-07-26 75 views
0

我在JPanel的JScrollPane中创建了JScrollbar(具有自定义UI)和JTextArea。我不想将滚动条添加为滚动条的水平滚动条,因为我希望能够定位它。将Java JScrollBar链接到JTextArea /定位JScrollBar(跟踪和缩略图)

我尝试在滚动条上设置模型并将其添加到面板(请参阅代码),但这不起作用 - 拇指尺寸不正确(它总是跨越整个轨道)并且不是定位正确。

JPanel panel = new JPanel(); 
JTextArea textArea = new JTextArea(col, rows); 
JScrollPane scrollPane = new JScrollPane(textArea); 
JScrollBar scrollBar = new JScrollBar();  
scrollBar.setModel(scrollPane.getHorizontalScrollBar().getModel()); 
panel.add(textArea); 
panel.add(scrollPane); 
panel.add(scrollBar) 

我如何使用滚动条链接到我的文字区域,这样拇指大小和正确的行为,并仍然能够设置的位置和我的滚动条的尺寸是多少?

谢谢!

+0

你说的“链接滚动到我的文字区域”是什么意思?你想在'textArea'中显示水平滚动条的值吗?它是否需要在面板中为'JScrollBar'(有'JSlider'可能更适合这个)。 – Xeon 2012-07-26 19:38:30

+0

我想要滚动条来指定在我的滚动窗格中可见(水平)的内容,并根据滚动窗格中可见的内容(与JScrollPane的默认JScrollBars的默认行为相似)来缩放缩放。那有意义吗? – user1555349 2012-07-26 22:03:36

回答

0

如果你想要默认行为 - 你已经做到了。您需要将一些组件添加到JScrollPane才能真正看到它。

下面是一个例子:

public final class Test { 
    public static void main(String[] a) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       JFrame frame = new JFrame(); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

       Container pane = frame.getContentPane(); 
       JPanel panel = new JPanel(); 
       JTextArea textArea = new JTextArea(2, 10); 
       JScrollPane scrollPane = new JScrollPane(textArea); 
       JScrollBar scrollBar = new JScrollBar();//new JScrollBar(SwingConstants.HORIZONTAL); 
       scrollBar.setModel(scrollPane.getHorizontalScrollBar().getModel()); 
       panel.add(textArea); 
       panel.add(scrollPane); 

       JPanel internal = new JPanel(); 
       for(int i = 0; i < 20; ++i) { 
        internal.add(new JLabel("TEXT")); 
       } 
       scrollPane.setViewportView(internal); 
       scrollPane.setPreferredSize(new Dimension(100, 100)); 
       panel.add(scrollBar); 
       pane.add(panel); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 

       frame.setVisible(true); 
      } 
     }); 
    } 
} 
+0

发现我的错误 - 谢谢! – user1555349 2012-07-27 16:45:23