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

时间:2015-10-01 17:39:54

标签: java swing

我正在学习自己在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;

由于

1 个答案:

答案 0 :(得分:4)

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