Avatar
Monarezio
Redaktor
Avatar
Monarezio:

Ahoj mam problem po spusteni se mi ukazuje jen bile okno a to tam mam pritom tenhle kod :(

package javagame;
import java.awt.Graphics;
import javax.swing.JFrame;

public class JavaGame extends JFrame {

    public JavaGame() {
        setVisible(true);
        setSize(500, 500);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        setLocationRelativeTo(null);
        setTitle("Java Game");
    }

    public void paintComponent (Graphics g)
    {
        super.paintComponents(g);
        g.drawString("Hello World!", 20, 20);
    }

    public static void main(String[] args) {
                new JavaGame();
    }
}

dekuji za pomoc

Odpovědět 6.8.2013 22:31
First, solve the problem. Then, write the code.
Avatar
Hartrik
Redaktor
Avatar
Hartrik:

Je tam několik chyb:

  • Metoda paintComponent by se asi měla jmenovat paintComponents.
  • Pokud necháš vytisknout text na pozici x20 y20 nebude vidět - chce to větší číslo :)
  • setVisible(true); se dává až nakonec a stejně konstruktor není nejlepší místo (navíc je to tam 2x)
new JavaGame().setVisible(true);
Editováno 7.8.2013 14:37
 
Nahoru Odpovědět 7.8.2013 14:36
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Hartrik
David Čápka:

PaintComponent je přece správně, vždyť je to přetížená metoda JFrame. new JavaGame().set­Visible(true) mi nepřijde jako dobrá praktika. Proč by nebyl text na pozici 20;20 vidět?

Na první pohled v tom kódu nic špatného nevidím, možná je problém v tom, že kreslí rovnou na frame místo na panel.

Nahoru Odpovědět 7.8.2013 14:58
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Hartrik
Redaktor
Avatar
Hartrik:

Správně je to paintComponents -s (http://docs.oracle.com/…/JFrame.html)
Je to lepší praktika než jak to je teď
Můžeš si to zkusit

Funkční to bude například takto:

package t01;

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

public class JavaGame extends JFrame {

    public JavaGame() {

        setSize(500, 500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        setTitle("Java Game");

        setLocationRelativeTo(null);
    }

    @Override
    public void paint(Graphics g) {
        g.drawString("Hello World!", 0 ,40);
    }

    public static void main(String[] args) {
        new JavaGame().setVisible(true);
    }

}
Editováno 7.8.2013 15:06
 
Nahoru Odpovědět 7.8.2013 15:06
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Hartrik
David Čápka:

Aha, ono je to u JFramu jinak, tak to se omlouvám :)

Nahoru Odpovědět 7.8.2013 15:08
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Hartrik
Redaktor
Avatar
Odpovídá na David Čápka
Hartrik:

Metoda paintComponents mi v tomto případě ale stejně nefunguje (možná kvůli tomu panelu, jak jsi psal), tak jsem použil metodu paint.

 
Nahoru Odpovědět  +1 7.8.2013 15:14
Avatar
Monarezio
Redaktor
Avatar
Monarezio:

Dekuju za pomoc uz sem to vyresil byl problem v tom JFramu mel jsem pouzivat JPanel :)

Nahoru Odpovědět 7.8.2013 16:13
First, solve the problem. Then, write the code.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.