帮我用注释的方法详细解释:public void paint(Graphics g) { super.paint(g); this.setBackground(Color.WHITE); p_width = this.getWidth(); p_height = this.getHeight(); g.setColor(new Color(0, 0, 0)); int x = p_width; int y = p_height; g.drawLine(0, 0, x, 0); g.drawLine(0, 0, 0, y); g.drawLine(0, y, x - 1, y); g.drawLine(x - 1, 0, x - 1, y); }
时间: 2024-02-14 20:10:46 浏览: 18
这段代码是一个Java中的Graphics类的paint方法的重写。其中,注释如下:
```
public void paint(Graphics g) { // 重写Graphics类的paint方法
super.paint(g); // 调用父类的paint方法
this.setBackground(Color.WHITE); // 设置背景颜色为白色
p_width = this.getWidth(); // 获取当前窗口的宽度
p_height = this.getHeight(); // 获取当前窗口的高度
g.setColor(new Color(0, 0, 0)); // 设置画笔颜色为黑色
int x = p_width; // 将窗口宽度赋值给变量x
int y = p_height; // 将窗口高度赋值给变量y
g.drawLine(0, 0, x, 0); // 画出窗口上边界
g.drawLine(0, 0, 0, y); // 画出窗口左边界
g.drawLine(0, y, x - 1, y); // 画出窗口下边界
g.drawLine(x - 1, 0, x - 1, y); // 画出窗口右边界
}
```
该方法主要作用是在当前窗口中画出一个边框,该边框的颜色为黑色,四周分别为上、下、左、右四条线段。其中,注释详细解释了每一行代码的作用。
相关问题
用中文注释一下代码://Clock.java import java.awt.*; import javax.swing.*; import java.util.*; //import Date and Locale import java.text.SimpleDateFormat; public class Clock extends JApplet implements Runnable { Thread clockThread; public void init() { //在JApplet的方法init 中,创建一线程命名为Clock clockThread = new Thread(this, "Clock-thread"); clockThread.start(); } //实现Runnable接口中的方法run,每隔一秒刷新时钟画面 public void run() { boolean flag=true; while (flag) { repaint(); try { clockThread.sleep(1000); } catch (InterruptedException e) { flag=false;} } //end of while } //end of run public void paint(Graphics g){ //JApplet的方法paint,显示当前时钟对象的值 super.paint(g); SimpleDateFormat formatter = new SimpleDateFormat (" hh:mm:ss ", Locale.getDefault()); Date currentDate = new Date(); String lastdate = formatter.format(currentDate); g.drawString(lastdate ,5, 10); } public void destroy() { //JApplet的方法 clockThread.interrupt(); } }
//Clock.java
//导入需要使用的类库
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.text.SimpleDateFormat;
//定义一个类Clock,继承自JApplet类,并实现Runnable接口
public class Clock extends JApplet implements Runnable {
//声明一个线程对象clockThread
Thread clockThread;
//在JApplet的方法init中,初始化clockThread线程并启动
public void init() {
clockThread = new Thread(this, "Clock-thread");
clockThread.start();
}
//实现Runnable接口中的方法run,每隔一秒刷新时钟画面
public void run() {
boolean flag=true;
while (flag) {
repaint(); //调用repaint()方法,刷新时钟画面
try {
clockThread.sleep(1000); //线程休眠一秒钟
} catch (InterruptedException e) {
flag=false;
}
} //end of while
} //end of run
//实现JApplet的方法paint,显示当前时钟对象的值
public void paint(Graphics g){
super.paint(g); //调用父类的paint()方法
SimpleDateFormat formatter = new SimpleDateFormat (" hh:mm:ss ", Locale.getDefault()); //创建日期格式化对象
Date currentDate = new Date(); //获取当前时间
String lastdate = formatter.format(currentDate); //将当前时间格式化
g.drawString(lastdate ,5, 10); //在指定位置绘制时间字符串
}
//实现JApplet的方法destroy,中断线程
public void destroy() {
clockThread.interrupt(); //中断线程
}
}
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class DrawingBoard extends JPanel implements MouseMotionListener, MouseListener { private int lastX, lastY; public DrawingBoard() { setPreferredSize(new Dimension(400, 400)); setBackground(Color.WHITE); addMouseMotionListener(this); addMouseListener(this); } public void paintComponent(Graphics g) { super.paintComponent(g); Font font = new Font("Arial", Font.BOLD, 20); g.setFont(font); g.setColor(Color.BLUE); g.drawString("Hello World!", 50, 50); } public void mouseDragged(MouseEvent e) { Graphics g = getGraphics(); g.drawLine(lastX, lastY, e.getX(), e.getY()); lastX = e.getX(); lastY = e.getY(); } public void mousePressed(MouseEvent e) { lastX = e.getX(); lastY = e.getY(); } public void mouseMoved(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public static void main(String[] args) { JFrame frame = new JFrame("Drawing Board"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new DrawingBoard()); frame.pack(); frame.setVisible(true); } }加注释
下面是对这段 Java 代码的注释:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
// DrawingBoard 类继承了 JPanel 类并实现了 MouseMotionListener 和 MouseListener 接口
public class DrawingBoard extends JPanel implements MouseMotionListener, MouseListener {
private int lastX, lastY; // 上一次鼠标移动的位置
// 构造函数
public DrawingBoard() {
setPreferredSize(new Dimension(400, 400)); // 设置 DrawingBoard 的首选大小
setBackground(Color.WHITE); // 设置 DrawingBoard 的背景颜色为白色
addMouseMotionListener(this); // 添加鼠标移动事件监听器
addMouseListener(this); // 添加鼠标事件监听器
}
// 重写 JPanel 的 paintComponent 方法,在 DrawingBoard 上绘制字符串
public void paintComponent(Graphics g) {
super.paintComponent(g); // 先调用父类的 paintComponent 方法
Font font = new Font("Arial", Font.BOLD, 20); // 创建字体对象
g.setFont(font); // 设置字体
g.setColor(Color.BLUE); // 设置画笔颜色为蓝色
g.drawString("Hello World!", 50, 50); // 在 DrawingBoard 上绘制字符串
}
// 鼠标拖动事件监听器
public void mouseDragged(MouseEvent e) {
Graphics g = getGraphics(); // 获取 DrawingBoard 上的画笔对象
g.drawLine(lastX, lastY, e.getX(), e.getY()); // 绘制直线,连接上一次鼠标移动的位置和当前位置
lastX = e.getX(); // 更新上一次鼠标移动的位置
lastY = e.getY();
}
// 鼠标按下事件监听器
public void mousePressed(MouseEvent e) {
lastX = e.getX(); // 记录上一次鼠标移动的位置
lastY = e.getY();
}
// 鼠标移动事件监听器(不需要实现)
public void mouseMoved(MouseEvent e) {}
// 鼠标单击事件监听器(不需要实现)
public void mouseClicked(MouseEvent e) {}
// 鼠标进入 DrawingBoard 事件监听器(不需要实现)
public void mouseEntered(MouseEvent e) {}
// 鼠标离开 DrawingBoard 事件监听器(不需要实现)
public void mouseExited(MouseEvent e) {}
// 鼠标释放事件监听器(不需要实现)
public void mouseReleased(MouseEvent e) {}
// 主函数
public static void main(String[] args) {
JFrame frame = new JFrame("Drawing Board"); // 创建 JFrame 对象
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置关闭操作
frame.getContentPane().add(new DrawingBoard()); // 在 JFrame 上添加 DrawingBoard
frame.pack(); // 调整 JFrame 的大小以适应 DrawingBoard
frame.setVisible(true); // 显示 JFrame
}
}
```