利用Graphics类做的一些习题(三)

效果

在这里插入图片描述

题目

**15.5(用三角形式显示数字)编写程序,将数字显示成三角形式。改变窗口大小时,为了适应窗口,行数会随窗口的大小而变化。

代码

package Test;

import javax.swing.*;
import java.awt.*;


public class Exercise15_5 extends JFrame {
    public Exercise15_5(){
        add(new drawRectangle());
    }

    public static void main(String[] args) {
        Exercise15_5 frame=new Exercise15_5();
        frame.setTitle("Exercise16_9");
        frame.setSize(200,400);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }




}

    class drawRectangle extends JPanel{
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            int x=0;
            int y=20;

            for (int i = 1; i <=getHeight()/10; i++) {
                for (int j = 0; j< i; j++) {
                    x+=20;
                    g.drawString(""+(j+1),x,y);
                }
                x=0;
                y+=30;
            }
        }
    }

思路解析

题目要求改变窗口大小时,为了适应窗口,行数会随窗口的大小而变化

所以可以看出显示的行数是根据窗口大小来的。

   for (int i = 1; i <=getHeight()/10; i++) {
                for (int j = 0; j< i; j++) {
                    x+=20;
                    g.drawString(""+(j+1),x,y);
                }
                x=0;
                y+=30;
            }
      

所以这里的双重循环,第一重的根据就是当前窗口的高度。这样拉大窗口显示的行数也会随之增加。

第二重循环控制每个数字之间的间距,在第二重循环,即同一行绘制数字的时候,每次绘制字符串,只需要挪动x的值
不需要移动y。

同理,在第一重循环,即绘制每一列数组的时候,x需要归零,y需要移动。

其他的都是格式化的内容,熟悉写法即可。

发布了100 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43576028/article/details/101869631