gpt4 book ai didi

Java Graphics - 像 Zelle 的 Python Graphics 一样简单

转载 作者:行者123 更新时间:2023-12-02 06:29:44 29 4
gpt4 key购买 nike

我是 Java 新手,我只是想得到一些简单的东西,可能类似于 Zelle's graphics对于Python。

最佳答案

Java 类 GraphicsGraphics2D应该包含 Zelle 图形所包含的大部分内容。

这里有一些 Java Swing 代码可以帮助您入门。只要按住鼠标左键,这个 Java 应用程序就会用鼠标进行绘制。当您释放鼠标左键时,屏幕会消失,您可以绘制其他内容。

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.event.MouseInputAdapter;

public class DrawingTest implements Runnable {

private JFrame frame;

private MyDrawPanel drawPanel;

private List<Point> points;

public DrawingTest() {
points = new ArrayList<Point>();
}

@Override
public void run() {
frame = new JFrame("Bouncing Vertices");

drawPanel = new MyDrawPanel(this);
MyListener alpha = new MyListener(this);
drawPanel.addMouseMotionListener(alpha);
drawPanel.addMouseListener(alpha);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(drawPanel);
frame.setSize(800, 600);
frame.setVisible(true);
}

public JPanel getDrawingPanel() {
return drawPanel;
}

public List<Point> getPoints() {
return points;
}

public void setPoint(int x, int y) {
points.add(new Point(x, y));
}

public void resetPoints() {
points.clear();
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new DrawingTest());
}

private class MyListener extends MouseInputAdapter {

private DrawingTest drawingTest;

public MyListener(DrawingTest drawingTest) {
this.drawingTest = drawingTest;
}

@Override
public void mouseDragged(MouseEvent event) {
drawingTest.setPoint(event.getX(), event.getY());
drawingTest.getDrawingPanel().repaint();
}

@Override
public void mouseReleased(MouseEvent event) {
drawingTest.resetPoints();
}

}

private class MyDrawPanel extends JPanel {

private static final long serialVersionUID = 1L;
private DrawingTest drawingTest;

public MyDrawPanel(DrawingTest drawingTest) {
this.drawingTest = drawingTest;
}

@Override
public void paintComponent(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.BLUE);
for (int i = 1; i < drawingTest.getPoints().size(); i++) {
Point p1 = drawingTest.getPoints().get(i - 1);
Point p2 = drawingTest.getPoints().get(i);
g.drawLine(p1.x, p1.y, p2.x, p2.y);
}
}
}

}

代码中的最后一个方法,paintComponent 方法,是您使用 Graphics 方法的地方。

关于Java Graphics - 像 Zelle 的 Python Graphics 一样简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20183666/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com