2013-01-14 21 views
2

我知道setViewportBorder(),但是我想知道是否可以設置視口的邊界,而不是隻用空白邊框填充。我想要實現的是爲頁眉和頁腳組件增加和減少按鈕創建空間。如何設置JViewport的插圖

    _ 
       |^| 
----------------| | 
|    | | 
| JViewport | | 
|________________| | 
       |v| 
+1

調整滾動窗格的佈局管理,接受額外的組件/ s的 – kleopatra

+0

的JViewport涵蓋整個JScrollPanes矩形,你可以把XxxBorders到JViewport的,但同方效果 – mKorbel

+0

btw:Jide commons的scrollPane/Layout有額外的組件 - 你可能想看看它的代碼來獲得一些想法 – kleopatra

回答

2

你總是可以滾你自己

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
class Testing 
{ 
    public void buildGUI() 
    { 
    JPanel p = new JPanel(new BorderLayout()); 
    JTextArea ta = new JTextArea(10,10); 
    ta.setLineWrap(true); 
    JScrollPane sp = new JScrollPane(ta,ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, 
             ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 
    JLabel header = new JLabel("Header",JLabel.CENTER); 
    JLabel footer = new JLabel("Footer",JLabel.CENTER); 
    JScrollBar sBar = new JScrollBar(); 
    sp.getVerticalScrollBar().setModel(sBar.getModel()); 
    p.add(header,BorderLayout.NORTH); 
    p.add(sp,BorderLayout.CENTER); 
    p.add(footer,BorderLayout.SOUTH); 

    for(int x = 0; x < 50; x++) ta.append(x+"\n"); 
    JFrame f = new JFrame(); 
    f.getContentPane().add(p); 
    f.getContentPane().add(sBar,BorderLayout.EAST); 
    f.pack(); 
    f.setLocationRelativeTo(null); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 
    } 
    public static void main(String[] args) 
    { 
    SwingUtilities.invokeLater(new Runnable(){ 
     public void run(){ 
     new Testing().buildGUI(); 
     } 
    }); 
    } 
} 
+0

這工作得很好,我從來沒有使用過'setModel'。我唯一需要做的是爲視口的內容添加一個'mouseWheelListener'。謝謝 – rtheunissen