Wywołanie funkcji paint w JFrame

0

Mam taki oto kod:

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

public class Gra extends JFrame{
	public Gra(){
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(null);
		setTitle("Gra");
		
		setSize(640, 480);
		setVisible(true);
	}
	public void paint(Graphics grafika){
		grafika.clearRect(0, 0, getSize().width, getSize().height);
		grafika.drawString("Jakiś tekst", 20, 20);
	}
	public static void main(String args[]){
		SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				new Gra();
			}
		});
	}
}

Jak wywołać funkcję paint w tym wypadku, aby wyświetliła jakiś tam przykładowy tekst?

1

A tak nie można?

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

public class Gra extends JFrame {

    public static void main(String args[]) {
	SwingUtilities.invokeLater(new Runnable() {
	    @Override
	    public void run() {
		Gra gra = new Gra();
	    }
	});
    }

    public Gra() {
	
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setTitle("Gra");
	setSize(640, 480);
	setVisible(true);
	getContentPane().add(new Grafika());
    }
}

class Grafika extends JPanel{

    @Override
    public void paint(Graphics g) {
	g.clearRect(50, 50, 100, 100);
	g.drawString("Jakiś tekst", 20, 20);
    }
} 
0

A no jak widać można... Szkoda, że wcześniej tego nie wiedziałem :)
Dziękuję za pomoc, pozdrawiam!

0

Masz tu szablon na wzór - może ci się przyda albo cokolwiek.

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

public class Gra {

    public static void main(String args[]) {
	EventQueue.invokeLater(new Runnable() {
	    @Override
	    public void run() {
		JFrame f = new PanelFrame();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setTitle("Gra");
		f.setSize(640, 480);
		f.setVisible(true);
		f.setLocationRelativeTo(null);
	    }
	});
    }
}
    
class PanelFrame extends JFrame{
	JLabel label;
	
	public PanelFrame(){
	    
	    label = new JLabel("PanelFrame");
	    add(label, BorderLayout.NORTH);
	    add(new Grafika(), BorderLayout.CENTER);
	}
    }

class Grafika extends JPanel{

    @Override
    public void paint(Graphics g) {
	g.clearRect(50, 50, 100, 100);
	g.drawString("Jakiś tekst", 20, 20);
    }
} 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.