当一个JPanel被添加进一个JScrollPane后,它需要怎样才能像JList之类的控件那样,根据
自己的大小让JScrollPane显示出滚动条呢,如果是需要实现Scrollable接口的话,需要如何实现呢?
希望大家帮忙!
import java.awt.Color;
import java.awt.Graphics;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;public class Test {
public Test() {
JFrame frame = new JFrame("Test");
frame.add(new JScrollPane(new GridPanel()));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setVisible(true); } /**
 * @param args
 */
public static void main(String[] args) {
new Test();
} class GridPanel extends JPanel {
int xOffset = 10, yOffset = 10, numRows = 20, numCols = 30,
gridWidth = 20, gridHeight = 20; @Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
g.setColor(Color.white);
g.fillRect(getX(), getY(), getWidth(), getHeight()); g.setColor(Color.black);
int numRowsPainted = 0;
while (numRowsPainted <= numRows) {
g.drawLine(getX() + xOffset, getY() + yOffset + numRowsPainted
* gridHeight, getX() + xOffset + numCols * gridWidth,
getY() + yOffset + numRowsPainted * gridHeight); numRowsPainted++;
}
int numColsPainted = 0;
while (numColsPainted <= numCols) {
g.drawLine(getX() + xOffset + numColsPainted * gridWidth,
getY() + yOffset, getX() + xOffset + numColsPainted
* gridWidth, getY() + yOffset + numRows
* gridHeight);
numColsPainted++;
}
} }
}