Erstellen eines einfachen eigenen JComponent in Java?

Möchte ich beginnen, meine eigene JComponent ist für ein Projekt an der Arbeit. Ich habe ein einfaches Beispiel unten, die sollten erstellen Sie einfach ein ball auf dem Bildschirm. (Ich fand die meisten davon im internet), aber es bietet eine anständige Ausgangspunkt. Meine Frage ist warum funktioniert dieser code nicht zeigen der ball in meine form? Was habe ich falsch gemacht?

Außerdem, was würde werden alle grundlegenden Methoden, die bereitgestellt werden SOLLTEN für eine eigene JComponent?

Code:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridBagLayout;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class testBall {
    public static void main(String[] args) {
        new testBall();
    }

    public testBall() {
        JPanel testPane = new JPanel();
        testPane.setBackground(Color.white);
        testPane.setLayout(new GridBagLayout());
        testPane.add(new MyBall(30,30,10));

        JFrame frame = new JFrame("Testing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.add(testPane);
        frame.pack();
        frame.setSize(500, 300); 
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

class MyBall extends JComponent
{
    private static final long serialVersionUID = 1L;
    public MyBall() { }
    public MyBall(int x, int y, int diameter)
    {
        super();
        this.setLocation(x, y);
        this.setSize(diameter, diameter);
    }

    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.setColor(Color.red);
        g.fillOval(0, 0, 100, 100);
    }
}

Wo konnte ich finden Sie eine Liste aller Methoden sollten überschrieben werden, in eine JComponent-Klasse? (Ich weiß, es gibt diejenigen, die immer einbezogen werden in JComponent.)

Wenn ich eine Instanz dieser Komponente in einer Klasse und müssen, ändern Sie die Farbe des Kreises würde ich einfach dort anrufen repaint() Methode aus dieser Klasse?

InformationsquelleAutor | 2014-05-05

Schreibe einen Kommentar