你如何在java swing中绘制并填充平行四边形?

时间:2015-01-19 03:24:25

标签: java swing

我环顾四周,我很惊讶我找不到用java swing绘制和填充平行四边形的方法。有没有一种简单的方法可以做到这一点?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

所有(或至少大多数)绘图都是通过继承JPanel并覆盖paintComponent方法完成的。所以它会这样开始:

public class MyPanel extends JPanel{

    @Override
    public void paintComponent(Graphics g){
        //Drawing stuff....
    }
}

从这里开始,您将要创建一个平行四边形Shape并填充它。 Shape的最简单实现是Path2D

public class MyPanel extends JPanel{

    private Path2D.Double parallelogram;

    public MyPanel(){
        parallelogram = new Path2D.Double();
        parallelogram.moveTo(0,0);
        parallelogram.lineTo(50,0);
        parallelogram.lineTo(100,50);
        parallelogram.lineTo(50,50);
        parallelogram.closePath();

        setPreferredSize(new Dimension(100, 100));
    }

    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D)g;
        g2d.setColor(Color.BLACK);
        g2d.fill(parallelogram);
    }
}

然后创建此面板的实例并将其添加到JFrame

public static void main(String[] args){
    JFrame f = new JFrame();
    f.add(new MyPanel(), BorderLayout.CENTER);
    f.pack();
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

答案 1 :(得分:1)

建议:

  • 使用Path2D对象创建一个Shape
  • 使用moveTo(...)方法
  • 开始您的平行四边形
  • 使用lineTo(...)方法继续绘制线条。
  • 绘制JPanel的paintComponent(Graphics g)方法覆盖。
  • 在此方法中,将Graphics对象强制转换为Graphics2D对象。
  • 然后调用传递Path2D对象的fill(yourShape)