JAVA绘制星空,使用JPanel
时间: 2024-11-25 17:11:44 浏览: 5
JAVA GUI自定义JPanel画板背景
在Java中使用JPanel绘制星空,可以按照以下步骤进行:
1. **导入必要的包**:
```java
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.awt.Color;
import java.util.Random;
```
2. **创建JPanel子类**:
```java
public class StarrySkyPanel extends JPanel {
private static final int STAR_COUNT = 500; // 星星的数量
private static final int MAX_STAR_RADIUS = 15; // 星星的最大半径
private static final Color BACKGROUND_COLOR = Color.BLACK; // 背景色
private static final Color STAR_COLOR = new Color(0xFF, 0x99, 0x00); // 星星颜色
public StarrySkyPanel() {
setPreferredSize(new Dimension(800, 600)); // 设置面板大小
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
// 绘制背景
g.setColor(BACKGROUND_COLOR);
g.fillRect(0, 0, getWidth(), getHeight());
// 绘制星星
Random random = new Random();
for (int i = 0; i < STAR_COUNT; i++) {
int x = random.nextInt(getWidth());
int y = random.nextInt(getHeight());
int radius = random.nextInt(MAX_STAR_RADIUS + 1); // 随机半径范围
g.setColor(STAR_COLOR);
g.fillOval(x - radius, y - radius, radius * 2, radius * 2);
}
}
}
```
3. **创建主窗口并添加JPanel**:
```java
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("星空");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
StarrySkyPanel skyPanel = new StarrySkyPanel();
frame.add(skyPanel);
frame.setVisible(true);
}
}
```
在这个例子中,我们创建了一个包含大量随机星星的JPanel,并在`paintComponent`方法中动态生成星星的位置和大小。每次刷新窗口时,星星的位置和颜色都会有所不同,模拟出星空的效果。
阅读全文