JAVA绘制星空,创建窗体类,创建Jpanel子类,添加到窗体中,在Jpanel中实现星空绘制,重写paintComponent(Graphics g): ,要求深蓝色背景,随机位置随机大小绘制“星号”
时间: 2024-11-25 13:10:56 浏览: 13
HeatMap:Java类在JPanel中绘制热图
在Java中,要绘制星空效果,你可以创建一个窗体类(例如`JFrame`)作为主界面,并在此基础上创建一个`JPanel`子类来承载星空画布。以下是一个简单的步骤说明:
1. **创建窗体类**:
```java
import javax.swing.JFrame;
public class StarrySkyWindow extends JFrame {
public StarySkyWindow() {
// 设置窗口属性
setTitle("星空");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new StarySkyWindow().setVisible(true);
}
});
}
}
```
2. **创建JPanel子类**:
```java
import javax.swing.JPanel;
import java.awt.Graphics;
import java.util.Random;
public class StarrySkyPanel extends JPanel {
private static final int STAR_SIZE = 5; // 星星的大小
private static final Color BACKGROUND_COLOR = Color.DARK_BLUE; // 背景颜色
public StarySkyPanel() {
setPreferredSize(new Dimension(800, 600));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// 绘制背景色
g.setColor(BACKGROUND_COLOR);
g.fillRect(0, 0, getWidth(), getHeight());
// 创建随机星星并绘制
for (int i = 0; i < 500; i++) {
Random rand = new Random();
int x = rand.nextInt(getWidth());
int y = rand.nextInt(getHeight());
int size = rand.nextInt(STAR_SIZE * 4) + STAR_SIZE; // 随机大小在STAR_SIZE到4*STAR_SIZE之间
g.fillOval(x, y, size, size);
}
}
}
```
3. **将JPanel添加到窗体中**:
在`StarrySkyWindow`类中,你需要将`StarrySkyPanel`实例添加到窗体上:
```java
@Override
public void paint(Graphics g) {
// 清除旧内容
g.clearRect(0, 0, getWidth(), getHeight());
// 添加星空面板
add(new StarySkyPanel());
revalidate(); // 更新布局
repaint(); // 刷新组件
}
// 其他窗口设置...
```
现在,当你运行这个程序,你会看到一个带有深蓝色背景、随机分布星星的星空画面。在`StarrySkyPanel`的`paintComponent`方法里,通过`fillOval`函数实现了星星的绘制。
阅读全文