我正在练习进行测试,我正在查看一些练习题。我遇到的问题比其他人更具挑战性。我需要编写一个方法,使用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来做到这一点。
答案 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 + - 已经有效的例子并从代码中找出来(对我来说很好)。