PaintComponent method not callable in Java

I am doing this very simple and simple Swing tutorial as the first assignment from my software development course and for some very strange reason the paintComponent method is not being used in my JPanel. Now I have worked with Java Swing in the past and have never had such problems.

The tutorial I'm using is right on the Oracle site (it's easier to go to the site and look at the code as it has the same code).

Link to tutorial

Can someone explain to me why it is not working for me?

My code:

import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JPanel    
import javax.swing.BorderFactory;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

public class PaintDemo {

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createGUI();
        }
    });
}

private static void createGUI() {
    System.out.println("Created GUI on EDT? "+
            SwingUtilities.isEventDispatchThread());
    JFrame frame = new JFrame("Yay, first 2102 lab!!");
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);        // allows to close the program
    DemoPanel panel = new DemoPanel();
    frame.add(panel);
    frame.pack();
    frame.setVisible(true);
}
}

class DemoPanel extends JPanel {

public DemoPanel() {
    setBorder(BorderFactory.createLineBorder(Color.BLACK));
}

public Dimension getPreferredSize() {
    return new Dimension(250,200);
}

public void paintComponenet(Graphics g) {
    super.paintComponent(g);
    g.drawString("This is my custom panel!",10,20);
}
}

      

+3


source to share


1 answer


This paintComponent(Graphics g)

, not paintComponenet(Graphics g)

.

At least you are calling correctly super.paintComponent(g)

.



If you annotate your method paint*

with annotation @Override

, you will get a compilation error to help you understand what's going on.

+5


source







All Articles