2017-06-15 1 views
0

に呼び出されていない:paintComponentが、私は次のコードしているのJPanel

package hra; 

import java.awt.Color; 
import java.awt.EventQueue; 
import java.awt.Graphics; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import javax.swing.JFrame; 
import static javax.swing.JFrame.EXIT_ON_CLOSE; 
import javax.swing.JPanel; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class HerniPole extends JPanel implements KeyListener 
{ 
    public int velikostPole; 
    HerniPole(int velikostPole) 
    { 
     this.velikostPole = velikostPole; 

     Color background = new Color(187, 173, 163); 
     EventQueue.invokeLater(new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       try 
       { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) 
       { 
        System.err.println("Error!"); 
       } 
      } 
     }); 
     JFrame frame = new JFrame(); 
     frame.setLocationRelativeTo(null); 
     frame.setResizable(false); 
     frame.setTitle("2048"); 
     frame.getContentPane().setBackground(background); 
     frame.setSize(450, 450); 
     frame.addKeyListener(this); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
    @Override 
    public void paintComponent(Graphics g) 
    { 
     System.out.println("xD"); 
     g.setColor(Color.BLACK); 
     g.drawRect(20, 20, 20, 20); 
     g.setColor(Color.yellow); 
    } 

    @Override 
    public void keyTyped(KeyEvent ke) 
    { 
     System.out.println(ke.getKeyCode()); 
    } 
    @Override 
    public void keyPressed(KeyEvent ke) 
    { 

    } 
    @Override 
    public void keyReleased(KeyEvent ke) 
    { 

    } 
} 

とpaintComponent()が呼び出されていない、また塗料()あるいは再描画()。私は間違って何をしていますか?私はStackOverflowで見つけたものすべてを試しましたが、何も動いていません。それを修正するには?ありがとう。

+0

前に、あなたがたJFrameを作成し、それが見えるようになるということですか。しかし、あなたはそれにコンポーネントを追加していません。おそらく、HerniPoleのインスタンスを作成してJFrameに追加する必要がありますか? – VGR

答えて

1

あなたはいくつかのことを逃した:

あなたはmainメソッドを持っていない(またはかもしれあなたが持っているが、あなたの質問にそれを投稿していない)とHerniPoleインスタンスを作成したことはありません。あなたのJFrameにごHerniPoleインスタンスを追加しませんでした

public static void main(String[] args) { 
    new HerniPole(0); 
} 

: は、このようなmainメソッドを追加します。 は、コンストラクタで、どこかframe.setVisible(true);

frame.add(this); 
+0

申し訳ありませんが、私のメインの投稿を忘れていました、frame.add(this);助けて頂きました。ありがとう! – esea123

関連する問題