使用笔操作绘制三角形组件

时间:2015-04-20 17:26:06

标签: java swing

怎么做?我的意思是,我可以为Ellipse做,但不确定三角形。

2 个答案:

答案 0 :(得分:1)

您可以使用Polygon

int[] xPoints = {0, 0, 30};
int[] yPoints = {0, 30, 30};
Shape s = new Polygon(xPoints, yPoints, 3);
g2d.fill(s);

答案 1 :(得分:0)

这不能回答您当前的问题。

它说明了为什么你不应该使用panel.getGraphics()来做你的绘画。使用getGraphics()方法完成的绘画不是永久性的。

尝试最小化或最大化框架,看看画面会发生什么:

import java.awt.*;
import javax.swing.*;

public class SSCCE2
{
    private static void createAndShowGUI()
    {
        final JPanel panel = new JPanel()
        {
            @Override
            protected void paintComponent(Graphics g)
            {
                super.paintComponent(g);

                g.setColor(Color.BLUE);
                g.fillOval(0, 0, 50, 50);
            }
        };

        JFrame frame = new JFrame("SSCCE");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(panel);
        frame.setLocationByPlatform( true );
        frame.setSize(300, 300);
        frame.setVisible( true );

        Graphics g = panel.getGraphics();
        g.setColor(Color.RED);
        g.fillOval(100, 100, 50, 50);

        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                Graphics g = panel.getGraphics();
                g.setColor(Color.RED);
                g.fillOval(100, 100, 50, 50);
            }
        });

    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowGUI();
            }
        });
    }
}