21xrx.com
2025-03-26 21:59:04 Wednesday
文章检索 我的文章 写文章
图形简单易懂教程
2023-06-16 12:42:57 深夜i     --     --

Java实现基础图形绘制

Java简单画图板完整代码

Java是一门广泛应用于计算机编程领域的高级编程语言,其简单易学的特性受到了广泛的欢迎和使用。在Java中,我们可以使用Graphics类实现基本图形的绘制,从而完成一个简单的画图板。

以下是一个Java简单画图板的完整代码。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Paint extends JFrame implements MouseListener, MouseMotionListener {
  private static final long serialVersionUID = 1L;
  private int startX, startY, endX, endY;
  private Graphics graphics;
  private JMenuBar bar;
  private JMenu menuFile, menuEdit, menuHelp;
  private JMenuItem fileOpen, fileSave, fileClear;
  private JMenuItem editUndo, editRedo;
  private JMenuItem helpAbout;
  private JPanel contentPanel;
  private JLabel longX, lonY;
  private int count = 0;
  public static void main(String[] args) {
    Paint paint = new Paint();
    paint.setVisible(true);
  }
  public Paint() {
    super("Java Painter");
    this.setLocation(100, 100);
    this.setSize(800, 600);
    bar = new JMenuBar();
    menuFile = new JMenu("文件(F)");
    menuFile.setMnemonic(KeyEvent.VK_F);
    menuEdit = new JMenu("编辑(E)");
    menuEdit.setMnemonic(KeyEvent.VK_E);
    menuHelp = new JMenu("帮助(H)");
    menuHelp.setMnemonic(KeyEvent.VK_H);
    fileOpen = new JMenuItem("打开(O)");
    fileOpen.setMnemonic(KeyEvent.VK_O);
    fileSave = new JMenuItem("保存(S)");
    fileSave.setMnemonic(KeyEvent.VK_S);
    fileClear = new JMenuItem("清空(C)");
    fileClear.setMnemonic(KeyEvent.VK_C);
    editUndo = new JMenuItem("撤销(U)");
    editUndo.setMnemonic(KeyEvent.VK_U);
    editRedo = new JMenuItem("重做(R)");
    editRedo.setMnemonic(KeyEvent.VK_R);
    helpAbout = new JMenuItem("关于(A)");
    helpAbout.setMnemonic(KeyEvent.VK_A);
    menuFile.add(fileOpen);
    menuFile.add(fileSave);
    menuFile.addSeparator();
    menuFile.add(fileClear);
    menuEdit.add(editUndo);
    menuEdit.add(editRedo);
    menuHelp.add(helpAbout);
    bar.add(menuFile);
    bar.add(menuEdit);
    bar.add(menuHelp);
    this.setJMenuBar(bar);
    contentPanel = new JPanel();
    this.setLayout(new BorderLayout());
    this.add(contentPanel);
    contentPanel.addMouseListener(this);
    contentPanel.addMouseMotionListener(this);
    longX = new JLabel("");
    lonY = new JLabel("");
    contentPanel.add(longX, BorderLayout.SOUTH);
    contentPanel.add(lonY, BorderLayout.SOUTH);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
  }
  public void clear() {
    graphics.setColor(Color.WHITE);
    graphics.fillRect(0, 0, 800, 600);
    graphics.setColor(Color.BLACK);
    repaint();
  }
  @Override
  public void mousePressed(MouseEvent e) {
    startX = e.getX();
    startY = e.getY();
    count++;
  }
  @Override
  public void mouseReleased(MouseEvent e) {
    endX = e.getX();
    endY = e.getY();
    graphics.drawLine(startX, startY, endX, endY);
    count++;
  }
  @Override
  public void mouseDragged(MouseEvent e) {
    if (count > 0) {
      endX = e.getX();
      endY = e.getY();
      graphics.drawLine(startX, startY, endX, endY);
      startX = endX;
      startY = endY;
    }
  }
  @Override
  public void mouseClicked(MouseEvent e)
  
  @Override
  public void mouseEntered(MouseEvent e)
  
  @Override
  public void mouseExited(MouseEvent e)
  
  @Override
  public void mouseMoved(MouseEvent e) {
    longX.setText("坐标:" + e.getX());
    lonY.setText("坐标" + e.getY());
  }
  public void setGraphics(Graphics graphics)
    this.graphics = graphics;
  
}

上面的代码中,我们定义了一个名为Paint的类,该类继承自JFrame,并实现了MouseListener和MouseMotionListener接口,以实现鼠标事件的监听和处理。在类的构造函数中,我们定义了一个JMenuBar及其所包含的JMenuItem,这些为画图板提供一些常用的功能,比如打开、保存、撤销、清空等。同时我们还通过contentPanel对象添加了鼠标事件监听器。

在Paint类中,我们还定义了一个clear方法,用于清空画板。在鼠标事件的处理中,我们还可以响应鼠标按下、鼠标抬起以及鼠标拖拽事件,并使用graphics对象绘制出一些简单的图形,如直线。我们还实现了mouseMoved方法,用于监听鼠标的移动,从而在状态栏上显示鼠标移动时的坐标。最后,我们通过setGraphics方法绑定graphics对象,从而实现基本图形绘制的功能。

通过这个简单的画图板代码,我们可以了解到Java绘图的基本流程及其实现方法,是Java初学者的必备知识点。如果你想更进一步了解Java绘图,还可以学习Java高级绘图技术,实现更加复杂的图形绘制。

  
  

评论区