用java编写一个显示三角形数字表的程序
(用三角形式显示数字) 编写程序,将数字显示成三角形式,改变窗口大小时,为了适应窗口,行数将会随窗口的大小而变化。
import javax.swing.*;
import java.awt.Color;
import java.awt.Graphics;
public class ShowTriangleNumber extends JFrame {
/**
* 定义一个面板类,添加到框架中
*/
public ShowTriangleNumber(){
add(new Npanel());
}
public static void main(String[] args){
ShowTriangleNumber frame = new ShowTriangleNumber();
frame.setTitle("show a chessboard");
frame.setSize(640,450);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class Npanel extends JPanel{
protected void paintComponent(Graphics g){
super.paintComponent(g);
for(int i=1;i < getHeight()/30;i++){
for(int j=1;j <= i;j++){
/*为了显示成一个三角形,每行需要控制行的Y轴坐标不变,为了填满空间,
*X轴的行进距离(getWidth()/(getHeight()/30))*j
*/
g.drawString(String.valueOf(j),(getWidth()/(getHeight()/30))*j, 30*i);
}
}
}
}
这一题开始做的时候想的复杂了,*行数将会随窗口的大小而变化* 这个要求我以为需要通过重绘方法repaint(),从这个角度想,不知道如何实现,后来先不管这个条件,程序先写出来,运行后发现,上面的要求已经实现了。这里还是有点问题:程序运行起来后,我调整窗口大小,源代码中并没有定义这样的方法,*行数将会随窗口的大小而变化*这个条件是怎么实现的呢?