我有Java applet来绘制一个数组(只是一个接一个的矩形)。
当用户选择创建大小为n
的数组时,它会绘制连接在一起的n
个矩形。当n
变大时,图形会变大,但由于我使用JPanel
绘制数组,而JPanel
不会滚动,我必须将JPanel
添加到一个JScrollPane
,但它仍然不会滚动。用户只能看到整个数组的一部分。
任何人都可以给我一些帮助吗?
这是我的代码:
public class ArrayPanel extends JPanel {
....
public void paintComponent(Graphics g) {
...draw array here..
// I wish to get the updated size of the graphis here,
// then i can reset the preferredSize()....?
System.out.println("width=" + getWidth() + " height=" + getHeight());
}
}
public class ArrayDemo extends JPanel {
public ArrayDemo() {
super(new BorderLayout());
arrayPanel = new ArrayPanel();
arrayPanel.setPreferredSize(new Dimension(400, 300));
JScrollPane container = new JScrollPane(arrayPanel,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
container.setPreferredSize(arrayPanel.getPreferredSize());
add(container, BorderLayout.CENTER);
...
}
}
答案 0 :(得分:3)
请勿在{{1}}中设置尺寸。
您没有提供该代码,但您在代码中有一些位置,您知道该数组的大小以及矩形的大小,因此请设置paintComponent
的尺寸。
以下是一个示例(使用JPanel
,而不是JFrame
,但想法是相同的),如下所示:
alt text http://img186.imageshack.us/img186/143/so2305419.png
Applet