画出一个正方形

文章介绍了如何在Java中创建一个名为TankFrame的类,该类继承自Frame,重写了构造方法和paint方法。构造方法用于设置窗口的基本属性如大小、标题和可见性,同时添加了窗口关闭监听器。paint方法被用来重绘窗口,示例中使用fillRect方法画出一个矩形。

1.新建TankFrame类继承Frame类方便重写里面的方法

2.创建一个构造方法

 3.把Main方法里的设置剪切进刚刚定义的构造方法(快捷键Ctrl+X)并修改里面的方法,并把f.删掉

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//继承Frame类,方便重写里面的方法
public class TankFrame extends Frame {

    public TankFrame(){
        setSize(800,600);//设置窗口大小
        setResizable(false);//设置为false后不能改变大小
        setTitle("tank war");//设置窗口标题为tank war
        setVisible(true);//设置是否显示

        addWindowListener(new WindowAdapter() {   //创建一个监听器如果用户点击X后调用windowClosing
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

}

4.在Main方法中New一个TankFrame来调用刚刚修改的构造方法

 运行查看效果

5.在TankFrame中重写Frame类中的paint方法(这里可以用idea中的快捷键alt+insert键)

 然后在键盘上直接输入print方法就可以定位到print方法

 

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//继承Frame类,方便重写里面的方法
public class TankFrame extends Frame {

    public TankFrame(){
        setSize(800,600);//设置窗口大小
        setResizable(false);//设置为false后不能改变大小
        setTitle("tank war");//设置窗口标题为tank war
        setVisible(true);//设置是否显示

        addWindowListener(new WindowAdapter() {   //创建一个监听器如果用户点击X后调用windowClosing
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
    }
}

 6.print方法是在窗口需要重新绘制的时候来调用它,我们可以先在print方法中写一段打印语句来验证

    @Override
    public void paint(Graphics g) {
        System.out.println("paint");
    }

7.再次运行可以看到控制台打印了两次paint语句

 8.然后我们来用paint方法来画一个矩形

调用Graphics 方法里的fillRect方法

@Override
public void paint(Graphics g) {
     g.fillRect();
}

fillRect方法有四个参数

x、y、width,height        

第一个参数是x值表示距离左边多少像素,y值表示距离上面多少个像素

width表示图形的宽度

height表示图形的高度

9.修改paint方法再次运行可以看到,画出来了一个黑色的距离左边200像素距离上面200像素宽度为50、高度为50的矩形

@Override
public void paint(Graphics g) {
    g.fillRect(200,200,50,50);
}

 

Java中,`paint`方法通常用于绘图,它是`java.awt.Component`类的一个方法。这个方法被用于绘制组件的外观,通常由系统调用。如果您在`paint`方法中添加了`System.out.println("paint")`这样的输语句,却没有看到控制台输“paint”,那么可能有以下几个原因: 1. 没有触发`paint`方法的调用。`paint`方法通常在组件被创建或者由于某些原因需要重绘时(例如窗口最小化后恢复)由系统自动调用。如果应用程序没有进行任何触发重绘的操作,那么`paint`方法就不会被执行。 2. 在一个Swing应用程序中,如果`paint`方法中的绘图代码被注释掉了(如`g.fillRect`语句所示),并且没有其他绘图代码执行,即使`paint`方法被调用,也不会有任何输,因为`System.out.println`语句没有被执行。 3. 如果程序是在集成开发环境(IDE)中运行的,有时候IDE的输窗口可能没有被正确地设置为显示标准输(System.out),导致控制台输没有显示来。 为了确保`System.out.println("paint")`能够被执行并产生输,你需要确保`paint`方法被调用。通常可以通过调用`repaint`方法来间接触发`paint`方法的调用。这里有一个简单的例子: ```java public class MyComponent extends javax.swing.JComponent { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); System.out.println("paint"); } public static void main(String[] args) { javax.swing.JFrame frame = new javax.swing.JFrame(); frame.setContentPane(new MyComponent()); frame.setSize(200, 200); frame.setVisible(true); frame.repaint(); // 这将触发 paintComponent 被调用 } } ``` 在这个例子中,创建了一个包含自定义`JComponent`的简单Swing应用程序,并通过`frame.repaint()`显式地调用了`paintComponent`方法,从而使得`System.out.println("paint")`被执行并输到控制台。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值