不知道如何使用swing来绘制矩形

时间:2013-07-15 14:05:36

标签: java swing

我正在练习进行测试,我正在查看一些练习题。我遇到的问题比其他人更具挑战性。我需要编写一个方法,使用swing看起来,创建100个给定宽度的矩形和通过简单的数学找到的不同高度。我已经制作了包含每个高度的数组,并且我设置了宽度。我怎样才能使用swing创建这些矩形?我希望以一种试图将我推向正确方向的方式回答这个问题(即尝试使用JLabel或其他类似的东西),而不是为我做这件事。我怎么会这样学习呢?我也可能会得到一些后续问题。这是使我的数组的高度和设置我的宽度的代码。可能是假设,但我的参数是以像素为单位。

public void paintComponent() {
   int[] heights = new int[100];
   int width = 10
   int initialHeight = 100;
   for (int i=0; i<100; i++) {
      int usedHeight = height - i;
      heights[i] = usedHeight;
   }

再次,请不要为我做。我只需指向正确的方向。我想我会以某种方式使用swing来做到这一点。

3 个答案:

答案 0 :(得分:3)

基本上,您要做的是子类JComponent and override paintComponent。传递给它的Graphics对象可让您执行所需操作(hint)。

答案 1 :(得分:2)

一般方法:

  • 使用JPanel制作JFrame

  • 给它一个布局(可能就像GridLayout一样简单 为此工作)

  • 将组件添加到容器中(我会指向Rectangle)(或者您可以使用JPanels并设置其边框/填充颜色)

Swing最难学的一件事就是布局经理,所以期待花一些时间抨击那堵墙直到它让位。准备摆动将所有矩形相互叠加,将它们绘制在一个列中,而不是完全绘制它们。可能不是那个顺序。

答案 2 :(得分:1)

好的,首先,你当前的代码中有一些错误(假设高度在下降):

public void paintComponent() {
  int[] heights = new int[100];
  int width = 10;
  int initialHeight = 100;
  for (int i=0; i<100; i++) {
    heights[i] = initialHeight;
    initialHeight--;
    //also heights[i] = 100-i;
  }
}

当在循环中声明usedHeight时,它在循环的一个“循环”期间存在。

其次,如果你想了解swing是如何工作的,请下载5 + - 已经有效的例子并从代码中找出来(对我来说很好)。