ボタンaを押すとボールが描画されるようにしたいんですけどボールが描画されません どのように変えたらいいんでしょうか? あとpaintcomponentはパネルなぜ追加しないのかを詳しく説明お願いします! import java.awt.BorderLayout; import java.awt.event.*; import javax.swing.*; import java.awt.Container; public class MainPanel extends JFrame implements ActionListener{ JButton[] bu=new JButton[7]; MainPanel frame; static Container container; static JPanel p; a A; public static void main(String[]args){ MainPanel i=new MainPanel(); } public MainPanel(){ container = getContentPane(); setTitle("カードゲーム"); setSize(1000,700); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); int l=10; p=new JPanel(); p.setLayout(null); bu[0]=new JButton("a"); bu[1]=new JButton("b"); bu[2]=new JButton("c"); bu[3]=new JButton("d"); bu[4]=new JButton("e"); bu[5]=new JButton("f"); bu[6]=new JButton("g"); for(int a=0;a<7;++a){ bu[a].setBounds(450,l,100,50); p.add(bu[a]); l=l+80; bu[a]. addActionListener(this); } container.add(p,BorderLayout.CENTER); } public void actionPerformed(ActionEvent e){ if(e.getSource() == bu[0]){ A=new a(); A.setLayout(null); container.removeAll(); container.add(A,BorderLayout.CENTER); A.menu .addActionListener(this); container.validate(); } //上のと同じ文があと何個か else if(e.getSource()==A.menu){ container.removeAll(); container.add(p,BorderLayout.CENTER); container.repaint(); } } } import java.awt.Graphics; import javax.swing.*; public class a extends JPanel implements Runnable{ JButton menu; JButton a; JButton b; private static final int NUM_BALL = 4; // ボールを格納する配列 private Ball[] ball; // アニメーション用スレッド Thread thread; a(){ menu = new JButton("タイトルへ"); menu.setBounds(1, 1, 100, 25); this.add(menu); ball = new Ball[NUM_BALL]; // ボールを作成 ball[0] = new Ball(0, 0, 1, 2); ball[1] = new Ball(10, 10, 3, -2); ball[2] = new Ball(50, 0, -2, 3); ball[3] = new Ball(0, 0, 12, 8); // スレッドを起動 thread = new Thread(this); thread.start(); } public void paintComponent(Graphics g) { super.paintComponent(g); // 各ボールを描画 for (int i = 0; i < NUM_BALL; i++) { ball[i].draw(g); System.out.println(1234); } } public void run() { while (true) { for (int i = 0; i < NUM_BALL; i++) { ball[i].move(); } repaint(); try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } } } }
↧