簡體   English   中英

在Java中查詢小程序

[英]Query about applets in java

我不明白為什么paint()中的println()語句執行兩次。這是代碼-

import java.awt.*;
import java.applet.*;
public class FirstApplet extends Applet
{
    public void init()
    {
        System.out.println(getBackground());
    }
    public void paint(Graphics g)
    {
        setBackground(Color.CYAN);
        setForeground(Color.RED);
        g.drawString("This is my first Applet",250,250);
        System.out.println(getBackground());
    }
}

輸出:

java.awt.Color [r = 255,g = 255,b = 255]

java.awt.Color [r = 0,g = 255,b = 255]

java.awt.Color [r = 0,g = 255,b = 255]

有人可以解釋一下為什么paint()中的println()執行兩次嗎?

public void paint(Graphics g)
{
    setBackground(Color.CYAN);  // will trigger repaint()!
    setForeground(Color.RED);   // will trigger repaint()!
    g.drawString("This is my first Applet",250,250);
    System.out.println(getBackground());
}

每當工具包認為有必要這樣做時,都會調用paint(Graphics)方法。 有很多事情會導致repaint() (進而導致對paint(Graphics)的調用)。 他們之中有一些是:

  • 窗口在應用程序的前面移動,或從應用程序前面移開。
  • 應用程序的大小。 變化。
  • 背景或前景顏色更改或組件狀態更改。
  • 菜單打開或關閉。
  • ...

顯然,繪畫不會僅在程序員希望(或期望)的時候發生。 如果該“在需要時繪畫”是應用程序的問題,那就是應用程序。 問題排序,而不是工具箱。


對您的查詢:

  1. 為什么要編寫小程序? 如果是由於老師指定了原因,請向他們介紹為什么CS老師應該停止教Java小程序
  2. 為什么要使用AWT? 出於很多充分的理由,請參閱此答案 ,以放棄使用AWT而支持Swing的組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM