2012-07-26 39 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