从两个不同的类调用图形不起作用

时间:2019-07-15 16:59:37

标签: java graphics

我正在创建一个使用Graphics2D和MouseListener在桌面上绘制小应用程序的微型操作系统。

每个应用程序都有自己的实现图形的类,该类具有用于绘制应用程序徽标的代码。 然后,我从主图形类(桌面)调用此图形方法。

不幸的是,这无法正常工作,它只会绘制首先调用的应用程序(例如,如果我先绘制TextEditor Graphics,然后绘制Paint App Graphics,则它只会显示TextEditor)

我认为这可能与创建另一个Graphics2D对象然后使用该对象调用第二个应用程序一样容易。

但是我正在尝试使其对开发人员友好(例如,如果有人想创建自己的应用程序,就像在其应用程序中添加一些方法一样容易并且可以使用),所以我不想添加另一个Graphics2D对象

这是台式机的图形

 public void paintComponent(Graphics g) {
  Graphics2D g2d = (Graphics2D) g;
  this.addMouseListener(this);

  //Desktop
  g2d.setColor(desktopBackground);
  g2d.fillRect(0, 0, this.getWidth(), this.getHeight());

  //Draw Applications

     SimplePaint.drawApp(g2d);

     TextEditor.drawApp(g2d);

  g.dispose();
 }

这是SimplePaint的图形

    public static void drawApp(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;

    g2d.setColor(MainColor);
    g2d.fillOval(AppXloc, AppYloc, Appwidth, Appheight);

    g2d.setColor(ComputerGraphics.desktopBackground);
    g2d.fillOval(AppXloc + Appwidth / 3, AppYloc + Appheight - 20, 
    Appwidth / 5, Appwidth / 5);

    g2d.setColor(Color.RED);
    g2d.fillOval(AppXloc + Appwidth / 10, AppYloc + Appheight / 2, 
    Appwidth / 4, Appheight / 4);

    g2d.setColor(Color.GREEN);
    g2d.fillOval(AppXloc + Appwidth / 5, AppYloc + Appheight / 5, 
Appwidth / 4, Appheight / 4);

    g2d.setColor(Color.BLUE);
    g2d.fillOval(AppXloc + Appwidth / 2, AppYloc + Appheight / 9, 
Appwidth / 4, Appheight / 4);

    g2d.setColor(Color.white);
    g2d.drawString(ApplicationName, AppXloc, AppYloc + Appheight + 
15);

    g2d.dispose();
}

这是TextEditor图形

public static void drawApp(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;

    g2d.setColor(Color.white);
    g2d.fillRect(AppXloc, AppYloc, Appwidth, Appheight);
    g2d.setColor(Color.black);
    g2d.fillRect(AppXloc + 10, AppYloc + 10, Appwidth - 20, 
Appheight - 20);
    g2d.setColor(Color.white);
    g2d.fillRect(AppXloc, AppYloc + 17, Appwidth, Appheight - 65);
    g2d.fillRect(AppXloc, AppYloc + 27, Appwidth, Appheight - 65);
    g2d.fillRect(AppXloc, AppYloc + 37, Appwidth, Appheight - 65);
    g2d.fillRect(AppXloc, AppYloc + 47, Appwidth, Appheight - 65);
    g2d.fillRect(AppXloc, AppYloc + 57, Appwidth, Appheight - 65);

    g2d.setColor(Color.white);
    g2d.drawString(ApplicationName, AppXloc, AppYloc + Appheight + 
15);

    g2d.dispose();
}

我希望它可以同时在桌面上显示两个应用程序,但不会

0 个答案:

没有答案