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

标签 java swing

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

感谢您提前提供的帮助。

最佳答案

swing 中的所有(或至少大部分)绘图都是通过子类化 JPanel 并重写 paintComponent 方法来完成的。所以它会这样开始:

public class MyPanel extends JPanel{

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

从这里开始,您将需要创建一个平行四边形形状,并填充它。供您使用的 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);
}

关于java - 如何在java swing中绘制并填充平行四边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28017537/

相关文章:

java - 如何从 Eclipse 项目引用 jar?

java - layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans) 方法中的 offsets.length 或 spans.length 是什么?

java - 从 JTextArea 中删除边框

java - Swing - 定位一些 JButton

java - Hibernate - 从 @ManyToMany 删除查询

java - 解析小数

java - 如何在 Spring Data 中通过示例对查询的两个日期之间的范围添加限制

java - 如何将日期格式的 JSpinner 值存储到 JodaTime 变量中?

java - 如何在 Spring 中将一组组件与 Swing 布局管理器居中对齐

java - add()ing 到 JPanel 会破坏它的大小