用其他类绘制图形



我有下面有两个类:我正在尝试做到这一点,以便调用 FilledFrame会产生某些形状。我已经用下面的一行对其进行了测试,但它并未显示在GUI上。我在这里做错了吗?我还需要制作一个能够修改某些矩形位置的Card类,因此我需要在主机中制作图形对象并将其输入FilledFrame和我的Card类?

import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Line2D;
import javax.swing.*;
public class FilledFrame extends JFrame implements ActionListener {
    static int FRAME_WIDTH = 500;
    static int FRAME_HEIGHT = 100;
    Graphics g = getGraphics();
    public FilledFrame () {
        g.drawLine(1, 1, 100, 100);
        setSize(FRAME_WIDTH, FRAME_HEIGHT);
        setVisible(true);
    }
    private void createComponents() {
        ...
    }
    private void createCards() {
        ...
    }
    @Override
    public void actionPerformed(ActionEvent e) {
    }
    public static void draw (Graphics g) {
        g.fillRect(0, 50, 100, 150);
    }
}

主类:

import java.awt.Graphics;
import java.awt.Shape;
import java.awt.geom.Line2D;
import java.awt.geom.Line2D.Float;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.Canvas;
import javax.swing.JComponent;
import javax.swing.JPanel;

public class Main {
    public static void main (String args[]) {
    FilledFrame frame = new FilledFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);           
    frame.show();
    }
}

我在这里做错了吗?

很遗憾地说,但是您猜想如何进行摇摆图绘图,尽管这可能与简单的Java概念作用,但它不会像秋千图形那样复杂。

问题包括:

  • 试图直接在Jframe中绘制 - 永远不要这样做,而是在Jpanel中绘制。
  • 在组件上调用getGraphics()以获取图形资源。这将导致您获得一个不稳定且短暂的图形对象,该对象可能导致绘画或NullpoInterExceptions
  • 不用适当的绘画方法绘制。
  • 您在绘图方法参数中使用int文字,而不是int变量,使您 do do do do,固定 - 您永远无法移动或更改它。

相反,我建议您:

  • 创建一个延伸jpanel并在该类中绘画的类。
  • 在此类的protected void paintComponent(Graphics g)方法中绘制。
  • 不要忘记在覆盖中调用超级的paintComponent方法,以便您的GUI清理任何肮脏的像素。
  • 然后将jpanel放入需要显示的jframe。
  • 在大多数绘图方法参数中使用int字段(变量)而不是int文字(所谓的"魔术"数字),以便如果您在程序运行时愿意的话,图纸可以更改。
  • 也是最重要的是,阅读和研究标准摇摆图形教程。

资源:

  • 真正的大索引:您应该开始的主要教程。
  • 使用秋千组件:如何创建摇摆gui的
  • 课程:执行自定义绘画:秋千图形的入门教程
  • Awt和Swing中的绘画:秋千图形的高级教程

相关内容

  • 没有找到相关文章

最新更新