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);
    }
} 

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