setBackground语句不起作用?

Eni*_*ang 3 java applet swing setbackground japplet

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

public class Snowman extends JApplet {
//---------------------------------------------
// Draws a snowman.
//---------------------------------------------
public void paint (Graphics page)
{
    final int MID = 150;
    final int TOP = 50;

    setBackground (Color.cyan);

    page.setColor(Color.blue);
    page.fillRect(0, 175, 300, 50); // ground

    page.setColor (Color.yellow);
    page.fillOval (-40, -40, 80, 80); // sun

    page.setColor (Color.white);
    page.fillOval (MID-20, TOP, 40, 40); // head
    page.fillOval (MID-35, TOP+35, 70, 50); // upper torso
    page.fillOval (MID-50, TOP+80, 100, 60); // lower torso

    page.setColor (Color.black);
    page.fillOval(MID-10, TOP+10, 5, 5);
    page.fillOval(MID+5, TOP+10, 5, 5);

    page.drawArc(MID-10, TOP+20, 20, 10, 190, 160); // smile

    page.drawLine (MID-25, TOP+60, MID-50, TOP+40); // left arm
    page.drawLine (MID+25, TOP+60, MID+55, TOP+60); // right arm

    page.drawLine (MID-20, TOP+5, MID+20, TOP+5); // brim of hat
    page.fillRect(MID-15, TOP-20, 30, 25); // top of hat
}
}
Run Code Online (Sandbox Code Playgroud)

这是所有代码.在声明了两个最终变量之后,声明了setBackground,感谢提前,我从一本书"Java软件解决方案"中得到了这个代码,我一遍又一遍地看着它,没有运气:/提前谢谢:)

And*_*son 5

雪人形象

//<applet code='Snowman' width=300 height=200></applet>
import javax.swing.*;
import java.awt.*;

public class Snowman extends JApplet {
//---------------------------------------------
// Draws a snowman.
//---------------------------------------------
    public void init() {
        add(new SnowmanPanel());
        validate();
    }
}

class SnowmanPanel extends JPanel {

    final int MID = 150;
    final int TOP = 50;

    SnowmanPanel() {
        setBackground (Color.cyan);
    }

    public void paintComponent(Graphics page)
    {
        super.paintComponent(page);

        page.setColor(Color.blue);
        page.fillRect(0, 175, 300, 50); // ground

        page.setColor (Color.yellow);
        page.fillOval (-40, -40, 80, 80); // sun

        page.setColor (Color.white);
        page.fillOval (MID-20, TOP, 40, 40); // head
        page.fillOval (MID-35, TOP+35, 70, 50); // upper torso
        page.fillOval (MID-50, TOP+80, 100, 60); // lower torso

        page.setColor (Color.black);
        page.fillOval(MID-10, TOP+10, 5, 5);
        page.fillOval(MID+5, TOP+10, 5, 5);

        page.drawArc(MID-10, TOP+20, 20, 10, 190, 160); // smile

        page.drawLine (MID-25, TOP+60, MID-50, TOP+40); // left arm
        page.drawLine (MID+25, TOP+60, MID+55, TOP+60); // right arm

        page.drawLine (MID-20, TOP+5, MID+20, TOP+5); // brim of hat
        page.fillRect(MID-15, TOP-20, 30, 25); // top of hat
    }
}
Run Code Online (Sandbox Code Playgroud)

一般建议.

  • 不要在顶级Swing组件中绘制.而是将自定义绘画移动到JPanelJComponent在那里绘画.对于后者的自定义绘画,覆盖paintComponent(Graphics)
  • 做自定义绘画时,记得打电话 super.paintComponent(Graphics)
  • 在构造函数(或init())中设置颜色,而不是在paint方法中.

其他建议

  • 对于静态图像,您还可以将其绘制为a BufferedImage并将图像ImageIcon放入a中JLabel.哪个更简单.
  • 如果这本书匆匆忙忙创建applet,就把它扔掉.小程序比标准应用程序困难得多,新手不应该尝试.