Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the simplest way to draw in Java?

Tags:

java

swing

paint

What is the simplest way to draw in Java?

import java.awt.*;
import javax.swing.*;

public class Canvas
{
    private JFrame frame;    
    private Graphics2D graphic;
    private JPanel canvas;

    public Canvas()
    {
        frame = new JFrame("A title");
        canvas = new JPanel();
        frame.setContentPane(canvas);
        frame.pack();
        frame.setVisible(true);
    }

    public void paint(Graphics g){
        BufferedImage offImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Grapics2D g2 = offImg.createGraphics();
        g2.setColor(new Color(255,0,0));
        g2.fillRect(10,10,200,50);
    }
}

This doesn't work and I have no idea how to get anything to appear.

like image 298
BookOfGreg Avatar asked Jan 21 '23 06:01

BookOfGreg


1 Answers

Easiest way:

public class Canvas extends JPanel {

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        // painting code goes here.
    }
}

You simply need to extend JPanel and override the paintComponent method of the panel.

I'd like to reiterate that you should not be overriding the paint method.

Here is a very minimalistic example that works.

public static void main(String[] args) {
    JFrame f = new JFrame();
    JPanel p = new JPanel() {
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawLine(0, 0, 100, 100);
        }
    };
    f.add(p);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
}
like image 171
jjnguy Avatar answered Jan 22 '23 19:01

jjnguy