2017-06-15 7 views
0

Ich habe folgenden Code:paintcomponent ist nicht in JPanel genannt wird

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) 
    { 

    } 
} 

Und paintcomponent() aufgerufen wird nicht ist, noch paint() oder sogar() neu streichen. Was mache ich falsch? Ich habe alles versucht, was ich auf StackOverflow gefunden habe, aber nichts funktioniert. Wie behebt man das? Vielen Dank.

+0

Sie ein JFrame erstellt und machte es sichtbar. Aber Sie haben keine Komponenten hinzugefügt. Vielleicht solltest du eine Instanz von HerniPole erstellen und sie zu deinem JFrame hinzufügen? – VGR

Antwort

1

Sie verpasst ein paar Dinge:

Sie eine main Methode nicht (oder sein kann, Sie haben aber es hat nicht in Ihrer Frage schreiben) und nie eine HerniPole Instanz erstellt. eine main Methode wie folgt hinzufügen:

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

Sie nicht Ihre HerniPole Instanz zu Ihrem JFrame hinzufügen. Sie, dass in den Konstruktor, irgendwo vor frame.setVisible(true);

frame.add(this); 
+0

Tut mir leid, ich habe vergessen, meine Haupt, frame.add (this); half mir. Vielen Dank! – esea123

Verwandte Themen