在 Swing 画面中绘制杨辉三角形,要绘制的行数由 Swing参数决定。例如,以下 为 3 行情形的杨辉三角形。 1 1 2 1 1 3 3 1
时间: 2024-11-22 14:37:56 浏览: 18
在Swing界面中绘制杨辉三角形,你可以利用Java的图形绘制功能和二维数组来存储每一行的数据,然后遍历这个数组并逐行打印出来。首先,你需要创建一个JPanel或者JFrame作为画布,并设置好布局管理器。以下是一个简单的步骤说明:
1. 创建一个`JPanel`或者`JFrame`实例,用于放置图形:
```java
JFrame frame = new JFrame("杨辉三角");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
```
2. 设置布局管理器,这里假设使用FlowLayout:
```java
frame.setLayout(new FlowLayout());
```
3. 定义一个方法来绘制杨辉三角,可以使用递归或循环来生成数组:
```java
public static int[][] generatePascalTriangle(int n) {
int[][] triangle = new int[n][];
triangle[0] = new int[] {1};
if (n > 1) {
for (int i = 1; i < n; i++) {
triangle[i] = new int[i + 1];
triangle[i][0] = triangle[i - 1][i - 1];
triangle[i][i] = 1;
if (i > 1) {
triangle[i][1] = triangle[i - 1][i - 2] + triangle[i - 1][i - 1];
}
}
}
return triangle;
}
```
4. 在`paintComponent(Graphics g)`方法中绘制杨辉三角:
```java
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int numRows = getPreferredSize().height / (getFontMetrics(getFont()).getHeight() * 2); // 确定显示行数
for (int i = 0; i < numRows; i++) {
int[] row = generatePascalTriangle(i + 1);
for (int j = 0; j <= i; j++) {
g.drawString(Integer.toString(row[j]), 10, (i - j) * getFontMetrics(getFont()).getHeight());
}
}
}
```
5. 添加组件到窗口并显示:
```java
frame.add(this);
frame.pack();
frame.setVisible(true);
```
阅读全文