現在、私は小さなコーディングプロジェクトに取り組んでおり、問題が発生しました。私は過去の仕事を見てきましたが、なぜこのプログラムがペイント方法を呼び出さないのか分かりません。現在、私はフレームに円を描こうとしています。オブジェクトクラスが画面にペイントしていません
以下は、描画しようとしているシンプルな円のウィンドウとオブジェクトクラスを作成します。私は、コンソールからの応答を取得するプログラムを実行すると、以下の
public class Main {
public static void main(String[] args) {
final int WIDTH = 700, HEIGHT = 900;
JFrame frame = new JFrame("Physics Demo");
JPanel content = new JPanel();
content.setLayout(new GridLayout(1, 0, 0, 0));
Character ball = new Character(WIDTH, HEIGHT);
Timer changeFrame = new Timer (100, ball);
frameSetup(frame, content, WIDTH, HEIGHT, ball, changeFrame);
}
public static void frameSetup(JFrame frame, JPanel content, int WIDTH, int HEIGHT, Character ball, Timer changeFrame){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(content);
content.add(ball);
frame.addKeyListener(ball);
frame.setPreferredSize(new Dimension(WIDTH, HEIGHT));
frame.setResizable(false);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
changeFrame.start();
}
}
クラスは、オブジェクトクラスです。キャラクターは一度トリガーする必要があります。また、actionPreformedメソッドは、タイマーをループで実行します。なんらかの理由で、ペイントクラスは実行されません。
public class Character extends JPanel implements ActionListener, KeyListener{
/* Identify the Objects values and physics,
* Characters weight, size and properties are below.
*
*/
private static final long serialVersionUID = 1L;
final int characterRadius = 30;
final double characterWeight = 0.5;
int characterY, characterX;
boolean bouncy;
public Character(int WIDTH, int HEIGHT){
System.out.println("Character called upon... " + WIDTH);
}
public void characterObject(Graphics g, int WIDTH, int HEIGHT){
super.paint(g);
System.out.println("characterObject graphics called upon... " + WIDTH);
g.setColor(Color.BLUE);
g.fillOval(350, 450, characterRadius, characterRadius);
}
/*
* Ball does not have any player interactions
*/
@Override
public void keyPressed(KeyEvent buttonPressed) {
}
@Override
public void keyReleased(KeyEvent arg0) {
}
@Override
public void keyTyped(KeyEvent arg0) {
}
//******************************************
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("actionPreformed called upon...");
repaint();
}
}
私は今しばらく試行錯誤を行ってきたと私はので、私は最後の手段としてこれを使用していますそれを把握するように見えることはできません。
必要に応じてさらに情報を提供できます。
なぜ'characterObject'から' super.paint'を呼び出していますか?これは、カスタム絵画の仕組みではありません。あなたはペインティングプロセスを制御しません、APIは – MadProgrammer