2
我知道setViewportBorder()
,但是我想知道是否可以設置視口的邊界,而不是隻用空白邊框填充。我想要實現的是爲頁眉和頁腳組件增加和減少按鈕創建空間。如何設置JViewport的插圖
_
|^|
----------------| |
| | |
| JViewport | |
|________________| |
|v|
我知道setViewportBorder()
,但是我想知道是否可以設置視口的邊界,而不是隻用空白邊框填充。我想要實現的是爲頁眉和頁腳組件增加和減少按鈕創建空間。如何設置JViewport的插圖
_
|^|
----------------| |
| | |
| JViewport | |
|________________| |
|v|
你總是可以滾你自己
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();
}
});
}
}
這工作得很好,我從來沒有使用過'setModel'。我唯一需要做的是爲視口的內容添加一個'mouseWheelListener'。謝謝 – rtheunissen
調整滾動窗格的佈局管理,接受額外的組件/ s的 – kleopatra
的JViewport涵蓋整個JScrollPanes矩形,你可以把XxxBorders到JViewport的,但同方效果 – mKorbel
btw:Jide commons的scrollPane/Layout有額外的組件 - 你可能想看看它的代碼來獲得一些想法 – kleopatra