如何更改图形的大小

时间:2010-02-21 09:14:34

标签: java swing jpanel scrollable

我有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);
 ...
  }
}

1 个答案:

答案 0 :(得分:3)

请勿在{{1​​}}中设置尺寸。

您没有提供该代码,但您在代码中有一些位置,您知道该数组的大小以及矩形的大小,因此请设置paintComponent的尺寸。

以下是一个示例(使用JPanel,而不是JFrame,但想法是相同的),如下所示:

alt text http://img186.imageshack.us/img186/143/so2305419.png

Applet