用java swing写一个多个矩形叠加效果,并居中显示
时间: 2024-02-01 17:16:42 浏览: 93
下面是一个示例代码,实现了多个矩形叠加效果并居中显示的功能:
```java
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class RectanglesPanel extends JPanel {
private static final long serialVersionUID = 1L;
private static final int RECTANGLE_COUNT = 5;
private static final int RECTANGLE_WIDTH = 100;
private static final int RECTANGLE_HEIGHT = 100;
public void paintComponent(Graphics g) {
super.paintComponent(g);
int panelWidth = getWidth();
int panelHeight = getHeight();
int totalWidth = RECTANGLE_WIDTH * RECTANGLE_COUNT;
int startX = (panelWidth - totalWidth) / 2;
int startY = (panelHeight - RECTANGLE_HEIGHT) / 2;
for (int i = 0; i < RECTANGLE_COUNT; i++) {
int x = startX + i * RECTANGLE_WIDTH;
int y = startY;
Rectangle rect = new Rectangle(x, y, RECTANGLE_WIDTH, RECTANGLE_HEIGHT);
Color color = new Color(255 - i * 40, 0, i * 40);
g.setColor(color);
g.fillRect(rect.x, rect.y, rect.width, rect.height);
}
}
public Dimension getPreferredSize() {
return new Dimension(500, 200);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Rectangles Panel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
RectanglesPanel panel = new RectanglesPanel();
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
```
在这个示例代码中,我们继承了 `JPanel` 类,并在 `paintComponent` 方法中绘制了多个矩形。在 `paintComponent` 方法中,我们首先获取了当前面板的宽度和高度,然后根据矩形的数量和大小计算出了每个矩形的位置,并使用不同的颜色填充了每个矩形。最后,我们使用 `getPreferredSize` 方法指定了面板的首选尺寸,并在 `main` 方法中创建了一个 `JFrame` 并将面板添加到其中。运行代码后,您应该可以看到一个显示多个矩形叠加效果并居中显示的窗口。
阅读全文
相关推荐













