gpt4 book ai didi

java - 关于java绘制三角形的实现问题

转载 作者:行者123 更新时间:2023-12-01 18:11:07 25 4
gpt4 key购买 nike

我正在自学java绘图,我发现了这段代码,我对代码的实现有一些疑问,请看下面的代码:

package shapes;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.event.WindowAdapter;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;

import com.sun.glass.events.WindowEvent;

public class drawTriangle extends Frame {

public Polygon mypolygon = new Polygon();

public void paint(Graphics g) {
Graphics2D ga = (Graphics2D) g;
ga.setPaint(Color.red);
ga.drawPolygon(mypolygon);

}


public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(200);
list.add(100);
list.add(950);
list.add(950);
list.add(100);
list.add(200);
list.add(list.get(0));
list.add(list.get(1));

drawTriangle frame = new drawTriangle();
for (int i=0; i<list.size(); i++ ) {
int x= list.get(i++);
int y= list.get(i);

frame.mypolygon.addPoint(x,y);

}

frame.addWindowStateListener(new WindowAdapter()

{ public void windowClosing(WindowEvent we)
{
System.exit(0);
}

});
frame.setSize(400,400);
frame.setVisible(true);


}

}

第一个问题)当我运行代码时,我得到一个带有绘制三角形的窗口......当我按删除窗口时它不起作用..我尝试放置 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setDefaultCloseOperation(drawTriangle.EXIT_ON_CLOSE); 但不起作用。我将 System.exit(0); 更改为 System.exit(1); 但没有删除 window 。运行代码后如何删除窗口?

第二个问题)public Polygon mypolygon = new Polygon();drawTriangle frame = new drawTriangle(); 之间有什么区别?

第三个问题)下面的代码是什么意思!!!

int x= list.get(i++);
int y= list.get(i);

第四个问题)这是做什么的Graphics2D ga = (Graphics2D) g;

谢谢

最佳答案

  1. 您永远不应该覆盖 pant 方法,在这种情况下您应该使用 paintComponent。如果这样做,您应该在 paint 的开头调用 super.paint(g) (这就是为什么您的窗口不会使用 setDefaultCloseOperation(JFrame .EXIT_ON_CLOSE))。
  2. Polygon是图形基元,Graphics是绘图组件的图形上下文,但swing总是分配更有特色的Graphics2D
  3. 如果您想使用更多特色类(class),则需要进行强制转换。
  4. new Polygon 创建新的绘图基元,new drawTringle 创建新的 JFrame
  5. main中,x 和 y 坐标收集在线性列表中。然后他们展开,再次得到 x,y 对。

关于java - 关于java绘制三角形的实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32893601/

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