我正在学习自己在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);
但未移除窗口。我运行代码后如何删除窗口?
第二个问题)public Polygon mypolygon = new Polygon();
和drawTriangle frame = new drawTriangle();
之间有什么区别?
第三个问题)下面的代码含义是什么!!!
int x= list.get(i++);
int y= list.get(i);
第四个问题)这是做什么的Graphics2D ga = (Graphics2D) g;
?
由于
答案 0 :(得分:4)
paintComponent
。如果您这样做,则应在super.paint(g)
的开头致电paint
(这就是为什么您的窗口不会与setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
关闭)。Polygon
是图形基元,Graphics
是绘图组件的图形上下文,但是swing总是会分配Graphics2D
更多功能。new Polygon
为绘图创建新原语,new drawTringle
创建新的JFrame
。main
中,x和y坐标收集在线性列表中。然后他们展开再次获得x,y对。