【问题标题】:How can I change te background color of a Java applet?如何更改 Java 小程序的背景颜色?
【发布时间】:2010-11-12 08:17:03
【问题描述】:

您好,

到目前为止,我的代码可以编译,但它会从白色变为黑色,然后不想更改。 假设它应该从 red->orange->green->pink->blue->black..

public void init() {
    c=new Color[] {Color.red, Color.orange, Color.green, 
                   Color.pink, Color.blue, Color.black };
    btnNext = new Button("Next Color");
    btnNext.addActionListener(this);
    setLayout(new BorderLayout());
    add(btnNext, BorderLayout.SOUTH);
}

public void paint(Graphics g) { }

public void actionPerformed(ActionEvent e) {
    if(e.getSource() == btnNext) {
        for(int n=0;n<6;n++) {
            setBackground(c[n]);
        }
    repaint();
    }
}

感谢您的帮助。

【问题讨论】:

    标签: java swing applet colors


    【解决方案1】:

    您需要做的是在数组中保留一个当前位置的int 成员变量。然后每次单击按钮时增加该位置。

    // New int keeping track of background pos
    private int arrPos;
    
    public void init() {
        c=new Color[] {Color.red, Color.orange, Color.green, 
                       Color.pink, Color.blue, Color.black };
        // initialize the int
        arrPos = 0;
        btnNext = new Button("Next Color");
        btnNext.addActionListener(this);
        setLayout(new BorderLayout());
        add(btnNext, BorderLayout.SOUTH);
    }
    
    public void paint(Graphics g) { }
    
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == btnNext) {
            // increment the background
            arrPos++;
            if (arrPos >= c.length) arrPos = 0;
            setBackground(c[arrPos]);
            repaint();
        }
    }
    

    【讨论】:

    • 如果你用一个空方法覆盖你的paint()方法,在重绘之后小程序不会被绘制吗?
    • @mjh2007我不建议使用空白方法覆盖绘画。我只是表明不需要更改绘制方法即可更改背景颜色。
    【解决方案2】:

    发生的情况是,每次触发 btnNext 操作时,您都会同时遍历所有颜色。它过得如此之快,以至于你看不到其他颜色。

    我要做的是有一个变量来跟踪您在数组中的位置,并在用户点击下一个时使该变量递增,然后将背景更改为该颜色。您必须摆脱 actionPerformed 中的 for 循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 2016-03-05
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      相关资源
      最近更新 更多