Я пытаюсь отобразить графику из отдельного класса на JPanel моего основного класса.
Основной класс mytest, а отдельный класс - Ball. Ball имеет метод рисования компонентов и просто рисует цветной круг. В моем случае я создаю экземпляр мяча и добавляю его в JPanel (dp): dp.add (ball). Очень просто, но все, что я получаю, это белый фон панели, а шар не рисуется.
Вот мой самый код:
package myStuff;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class mytest {
private JFrame frame=new JFrame();
private JPanel dp = new JPanel();
public static void main(String[] args) {
mytest gui = new mytest();
gui.go();
}
public void go() {
frame.setTitle("Test");
frame.setSize(1000,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel dp=new JPanel();
dp.setBackground(Color.WHITE);
Ball ball = new Ball(dp.getWidth(),dp.getHeight());
dp.add(ball);
frame.add(dp);
frame.setVisible(true);
}
}
и вот класс Ball код:
package myStuff;
import java.awt.*;
import javax.swing.*;
public class Ball extends JComponent{
private int Width;
private int Height;
public Ball (int width, int height ) {
Width=width;
Height=height;
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
super.paintComponent(g2d);
g2d.setColor(Color.RED);
g2d.fillOval(Width/2,Height/2,40,40);
System.out.println("Doing graphics....");
}
}
На панели ДП должен появиться красный шар. Все, что я получаю, это фон панели, а не мяч. Я знаю, что он пытается, так как «Doing graphics» печатает дважды.