Anonymní profil Johnn195 – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Johnn195 – Programujte.comAnonymní profil Johnn195 – Programujte.com

 

Příspěvky odeslané z IP adresy 195.26.25.–

Johnn195
Java › Kreslení a překreslení
30. 10. 2013   #182983

#12 sleepy
Ok, moc díky. Nyní je mi to mnohem jasnější a už s tím dokáži o něco lépe pracovat. Díky! :)

Johnn195
Java › Kreslení a překreslení
28. 10. 2013   #182884

#9 sleepy
Ano, to je můj problém. Vykresluji obrázek, kterým chci pohybovat, ale místo toho se vykresluje na novo. Předtím jsem omylem repaint volal někde jinde, proto vše zmizelo, ale teď, když volám repaint na správném místě, tak bez efektu obrázek je stejně vykreslen mnohokrát. Takže mi stačí akorát zavolat flush? A kde ho mám zavolat? Když jsem to zatím zkoušel v metodě paint, tak mi to IDE podtrhal.

A ano, anotace @Override mi při Graphics2D hází chybu, předtím neházel, protože už jsem tam měl pouze Graphics.

Johnn195
Java › Kreslení a překreslení
28. 10. 2013   #182877

#5 sleepy
Díky za odpověď. Tohle chápu a upravil jsem tu metodu paint podle toho jak jsi napsal. Ale stále bez výsledku, program se chová stejně, zkusil jsem i použít @Override anotaci a IDE (používám netbeans) mi to nepodtrhlo a šlo to i zkompilovat.

Johnn195
Java › Kreslení a překreslení
28. 10. 2013   #182866

Díky za odpověď, ale stále tomu nerozumím. Když to teda nekreslím do paint, tak kam to tedy v tomto případě kreslím? A jak docílím toho, abych to tedy kreslil do paint? Aby mi to tedy nemizelo. Zkoušel jsem to upravit, ale stále žádný posun.

public class Grafika extends JPanel {
    Image img1 = Toolkit.getDefaultToolkit().getImage("src/img/test2.png");
    private int x = 0, y = 0;
    
    public void paint(Graphics2D g2d) {
        super.paint(g2d);
        g2d.drawImage(img1, x, y, null);
    }
    public void moveH() {
        x += 10;
    }
}

Když v této třídě kdekoliv zavolám repaint vůbec nic se nestane.

A jinak volám odsud

private void formKeyPressed(java.awt.event.KeyEvent evt) {                                
        switch(evt.getExtendedKeyCode()) {
            case KeyEvent.VK_D:
                grafika.moveH();
                grafika.paint((Graphics2D)jPanel1.getGraphics());
                break;
        }
    }

Když volám repaint tady, tak všechno zmizí.

Zkoušel jsem se i dívat na různé tutoriály, ale žádná úprava mého kódu mi prostě nefungovala.

Johnn195
Java › Kreslení a překreslení
28. 10. 2013   #182849

Zdravím, mám opět jeden problém s Javou.

Potřebuji vykreslit obrázek, který mám zde

public void paint(Graphics2D g2d) {
	g2d.drawImage(img1, x, y, null);
}

A potřebuji s ním hýbat, to dělám tak, že měním souřadnice x a y. Ale vždy když zavolám tuto metodu, tak se obrázek vykreslí znovu, ale já potřebuji, aby se pouze překresloval. Také jsem zkoušel z místa volání metody volat i repaint(), ale to mi pak zmizelo úplně vše.

Grafice v Javě moc nerozumím, takže prosím o radu. Předem děkuji za odpověď

Johnn195
Java › Vykreslování třídy graphics
12. 9. 2013   #181324

Dobrý den. Pracuji na jednom programu, kde se začíná v menu a po kliknutí na button a chci, aby se mi vykreslily určité objekty, které už jsem si vytvořil v jiné třídě. Problém je, že místo vykreslení mi to jen tak probliklo a nic tam vykreslené nezůstalo. zde kód

CardLayout card = (CardLayout)(jPanel3.getLayout());
card.next(jPanel3);
polehodnot.cleanValue();
mrizka.paintComponent(jPanel2.getGraphics());

Toto je vnitřek metody která se vykoná po kliknutí na button. Přepne se do dalšího panelu v Layoutu, kde se má vykreslit mrizka. To je v pořádku. To se přepne, ale to, co se má vykreslit pod mrizkou se nevykreslí, maximálně jen problikne.

Avšak podařilo se mi to "obejít" jednoduše tak, že před řádkem jsem měl umístěný JOptionPane. Pak kód vypadá takto

CardLayout card = (CardLayout)(jPanel3.getLayout());
card.next(jPanel3);
polehodnot.cleanValue();
JOptionPane.showMessageDialog(newGame1, "Zvolil/a jste si hru pro jednoho hráče", "Nová hra", JOptionPane.INFORMATION_MESSAGE);
mrizka.paintComponent(jPanel2.getGraphics());

A toto mi správně funguje! Všechno se správně vykreslí, když kód vypadá takto.

Problém je, že nechápu proč tomu tak je a také to, že bych se toho JOptionPane potřeboval zbavit, ale potřebuji zachovat funkčnost.

Budu vděčný, kdyby mi to někdo dokázal objasnit a pomoci :)

Johnn195
Java › Key Pressed nefunguje
9. 6. 2013   #177682

Ok, vyřešeno.

Děkuji moc, opravdu jsi mi velmi pomohl :)

Johnn195
Java › Key Pressed nefunguje
9. 6. 2013   #177616

Díky moc. Naprostá pravda. Mám to jako třídu JFrame ve které jsem měl i nějaké objekty(jButton), když jsem je odstranil, tak už to pracuje jak má :)

Ale ještě bych měl jednu otázku. Když totiž nějaké objekty znovu přidám, tak to opět nefunguje. Je nějaká možnost jak tam mít ty objekty, a aby mi v tom zároveň nedělaly tu paseku?

Johnn195
Java › Key Pressed nefunguje
8. 6. 2013   #177613

Díky za rady. Kód jsem tedy přizpůsobil do této podoby, ale stále nechce fungovat   

 

public class menuGUI extends javax.swing.JFrame {

    /**
     * Creates new form menuGUI
     */
    public int hrX = 0;
    public menuGUI() {
        initComponents();
        this.addKeyListener(ka);
    }

    KeyAdapter ka = new KeyAdapter(){
        @Override
        public void keyPressed(KeyEvent e){
            if(e.getKeyCode() == KeyEvent.VK_M){
                hrX += 1;
            }
        }
    };
}
Johnn195
Java › Key Pressed nefunguje
8. 6. 2013   #177592

Dobrý den,

V Javě jsem začal teprve nedávno, takže se v ní ještě úplně neorientuji a narazil jsem na problém, který nejsem schopen vyřešit sám.

Nějak mi nejde, aby mi fungoval KeyPressed. V současné době to tak testuji, takže se momentálně snažím docílit toho, aby se mi při stisku klávesy M zvedala proměnná, kterou jsem si deklaroval, o jednu hodnotu.

Kód zde:

public class menuGUI extends javax.swing.JFrame {

    /**
     * Creates new form menuGUI
     */
    public int hrX = 0;
    public menuGUI() {
        initComponents();
         this.addKeyListener(ka);
    }

    KeyAdapter ka = new KeyAdapter(){
        public void KeyPressed(KeyEvent e){
            if(e.getKeyCode() == KeyEvent.VK_M){
                hrX =+ 1;
            }
        }
    };
}

Nic se mi nepodtrhává, žádný error, ale prostě to nefunguje a za boha nejsem schopen přijít na to, kde bych tam mohl mít chybu, nebo co by mi tam mohlo chybět. Proto prosím o nějakou radu.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý