GUI Graphics2D

0

Witam mam problem z paintComponent, mianowicie nie chce mi wyświetlać obiektów które tam napiszę, problem jest pewnie banalny, ale jestem dopiero początkującym w javie więc proszę o pomoc.

package warcaby;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;

public class GameFrame extends JFrame 
{
	JFrame jframe= new JFrame();
	
	public GameFrame()
	{
		jframe.setTitle("Warcaby");
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jframe.setSize(1000,700);
		jframe.setLocation(100,10);
		jframe.setVisible(true);
	}
	public void paintComponent(Graphics g)
	{	
		Graphics2D g2d = (Graphics2D) g;
		setBackground(Color.pink);
		g2d.setColor(Color.blue);
		g2d.fillRect(100, 100, 380, 380);
	}
}


package warcaby;

import java.awt.EventQueue;

public class MainGame {

	public static void main(String[] args)
	{
	EventQueue.invokeLater(new Runnable() 
	{
		@Override
		public void run() 
		{
		new GameFrame();		
		}
	});
}
}
0

Zadam pewnie głupie pytanie, a jak jest różnica pomiędzy paintComponents a paintComponent?

0

Moja wcześniejsza głupia odpowiedź jest nieaktualna.
Spróbuj zrobić tak: niech Twoja klasa która posiada paintComponent dziedziczy z JPanel. Potem w głównej klasie utwórz sobie JFrame i tam za pomocą metody .add na tym JFrame dodaj sobie obiekt Twojej klasy z paintComponent.

0

Dziękuje za odpowiedź, ale niezbyt rozumiem w jaki sposób mam zmienić Główną klasę, mógłbyś mi to na kodzie rozjaśnić?
Z góry dzięki

0

No ogólna idea jest taka:

class GameFrame extends JPanel {
    @Override
    public void paintComponent(Graphics g) {
        Graphics2D g2d = (Graphics2D) g;
        setBackground(Color.pink);
        g2d.setColor(Color.blue);
        g2d.fillRect(100, 100, 380, 380);
    }
}

public class Main {
    public static void main(String[] args) {
        JFrame jframe= new JFrame();
        jframe.setTitle("Warcaby");
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jframe.setSize(1000,700);
        jframe.setLocation(100,10);
        jframe.setVisible(true);
        jframe.add(new GameFrame());
    }
}

Btw, sporo tutoriali jest na ten temat.

0
public class GameFrame extends JFrame 
{
    JFrame jframe= new JFrame();
    public static void main(String[] args)
    {
        new GameFrame();
    } 
    public GameFrame()
    {
        jframe.setTitle("Warcaby");
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //jframe.setSize(1000,700);
        jframe.setLocation(100,10);
        jframe.setVisible(true);
        JPanel panel = new Panelik();
        jframe.add(panel);
        jframe.pack();
    }
    class Panelik extends JPanel
    {
        Panelik()
        {
            setPreferredSize(new Dimension(1000,700)); 
            setBackground(Color.PINK);
        }
        public void paintComponent(Graphics g)
        {
            super.paintComponent(g);    
            Graphics2D g2d = (Graphics2D) g;
            g2d.setColor(Color.blue);
            g2d.fillRect(100, 100, 380, 380);
       }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1