私はアマチュアのJavaコーダーで、SpaceInvadersに似たゲームを作りたいです。グラフィックが表示されないのはなぜですか?
paintControllerをパネルに追加しようとすると、フレームが空白になっているのですが、定期的にコードを追加すると、すべての結果が表示されます。
はここでグラフィックスがパネルなしで追加されたとき、私のオブジェクトクラスだと競合がない:
package SS;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.Serializable;
import java.util.*;
public class objects extends JPanel{
private int rand1, rand2, y;
int x=0;
Random rand = new Random();
public class picture extends JPanel{
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.BLACK);
for (int c=0;c<=1000;c++){
g.setColor(Color.yellow);
rand1=rand.nextInt(1920);
rand2=rand.nextInt(720);
g.drawOval(rand1, rand2, 1, 1);}
g.setColor(Color.MAGENTA);
g.fillRect(1920/2-x,720-100+y, 50, 50);
}
}
}
今私のオブジェクトクラスのこのバージョンは
package SS;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.Serializable;
import java.util.*;
public class objects extends JPanel{
private int rand1, rand2, y;
int x=0;
Random rand = new Random();
public objects(){
JPanel jp = new JPanel();
picture p = new picture();
jp.add(p);
}
public class picture extends JPanel{
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.BLACK);
for (int c=0;c<=1000;c++){
g.setColor(Color.yellow);
rand1=rand.nextInt(1920);
rand2=rand.nextInt(720);
g.drawOval(rand1, rand2, 1, 1);}
g.setColor(Color.MAGENTA);
g.fillRect(1920/2-x,720-100+y, 50, 50);
}
}
}
の私の目的は空白のフレームを生成しpaintComponentの周りに外部クラスを作ることは、将来のキーバインドのためにコンポーネントを作成することができることです。
私は狂っている!私はこのサイトの周りを検索し、何も見つけることができません!誰もが、私はそれを深く感謝し、私に原因と解決策を伝えることができた場合:)
をこれが
package SS;
import javax.swing.JFrame;
public class mainframe {
public static void main(String[] args){
JFrame mainFrame = new JFrame();
mainFrame.setBounds(0, 0, 1920, 720);
mainFrame.setResizable(false);
mainFrame.getContentPane().add(new objects());
mainFrame.setDefaultCloseOperation(mainFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
}
}
経由で私のメインクラスです私は批判、私はこの中で述べて何のための適切な文言に開いています役職。ちょうど私が何を意味するか反復する
: 私は、メインフレームクラスで私のフレームに
をそのJPanelのを追加し、私はJPとして記載されているのJPanelに自分のpaintComponentメソッドから作られたグラフィックスを追加したい。また申し訳ありません私が見逃したことがあれば、これはStackOverflowの私の最初の投稿です。あなたはobjects
コンストラクタで新しいjp
パネルにpicture
パネルを追加することが、新しいパネルがobjects
自体に追加されていないことされた第2の例では
私は、テキストボックスの書式を経由してコードを追加しようとしましたが、それは私がスクリーンショットを取ったので、私はそれを追加することはできませんでした。ごめんなさい! – eyelikeboats
ようこそStackOverflowへ!リンクが将来死んでしまう可能性があるため、コードの画像を投稿することはお勧めしません。また、一般的に読むのが難しくなる可能性があります。あなたがコードブロックを使って直接答えにあなたのコードを投稿することができればよいでしょう。 編集:ちょうど上記のあなたのコメントを見た。試してみるとどのようなエラーが出ますか? –
将来的には、コードを画像ではなくコードとして表示する必要があります。イメージをIDEにコピーして実行することはできません。コードが大きすぎるとサイトから通知された場合は、コードを短くしますが、まだコンパイルされて、[mcve]が実行されていることを確認してください。 [ヘルプ]のセクションを尋ねる方法を確認してください。 –