我不习惯于GUI开发,但是现在我需要一点,并且我想避免仅仅因为这个问题而阅读所有文档。

我在显示自定义组件(如我在下面发布的组件)时遇到麻烦。如果我将其添加到JFrame中,则可以正常工作,但不能再添加一个,如果将其添加至JPanel中,则完全不会显示。

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JComponent;

public class Test extends JComponent implements Runnable {

    private int c,x,y;

    public Test(int x,int y){
        c = 0;
        this.x = x;
        this.y = y;
    }

    private void inc(){
        c++;
        if(c>255){
            c = 0;
        }
    }

    public void paint(Graphics g) {
        g.setColor(new Color(c,c,c));
        g.fillRect(x, y, 50, 50);
    }

    public void run() {
        while(true){
            inc();
            try{
                Thread.currentThread().sleep(20);
            } catch (Exception e){
            }
            repaint();
        }
    }
}

最佳答案

我想避免阅读全部
  正因为如此
  问题。


是的,良好的阅读实际上可以节省时间,因为您可以在第一时间正确地做事,而不必坐在那里等待/希望别人回答您​​的问题。

所以从Swing tutorial开始

1)通过覆盖paintComponent()方法来完成自定义绘制。阅读Swing教程中有关“自定义绘画”的部分。

2)动画应该通过使用Swing计时器来完成,请参见教程中“如何使用计时器”部分。

3)实际上,您不需要创建自定义组件。您需要做的就是创建一个JPanel,设置其首选大小,然后使用Timer更改其背景。

09-11 18:09
查看更多