Autor Zpráva
barns
Profil *
Zdravím, trápim se s tím od poloviny prosince a nevím si rady. Jak napsat program v javě, v němž budou dvě plochy canvas a do nich se budou dát kreslit geometrické útvary?
import java.awt.*; 
import java.awt.Graphics.*; 
import java.awt.Canvas.*; 
import javax.swing.*; 
import javax.swing.JDialog.*; 
import javax.swing.JFrame.*; 

public class test extends JFrame { 
    public test() { 
        initComponents(); 
    } 

    private void initComponents() { 
        panel = new javax.swing.JPanel(); 
        canvas = new java.awt.Canvas(); 

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

        panel.setBackground(new java.awt.Color(255, 0, 0)); 
        panel.setLayout(null); 
        canvas.setBackground(new java.awt.Color(0, 255, 0)); 
        panel.add(canvas); 
        canvas.setBounds(30, 20, 150, 140); 
        getContentPane().add(panel, java.awt.BorderLayout.CENTER); 
        pack(); 
    } 

    public static void main(String args[]) { 
        java.awt.EventQueue.invokeLater(new Runnable() { 
            public void run() { 
                new test().setVisible(true); 
            } 
        }); 
    } 
    private java.awt.Canvas canvas; 
    private javax.swing.JPanel panel; 
}


nevíte prosím, jak na to? díky ...
WanTo
Profil
Vykašli se na Canvas. Napiš si vlastní třídu dědící z JComponent a přepiš jí metodu paint(Graphics g) tak, aby do grafického kontextu g nakreslila vlastní instanci BufferedImage (stejných rozměrů jako tvoje nová komponenta), ve které budeš mít uložený aktuální obsah plátna. Při kreslení (na základě nějaké události myši) navíc ještě po vykreslení obrázku v paint() vykreslíš požadovaný tvar, jakmile pustíš myš, tvar vykreslíš do grafického kontextu obrázku. Toť vše, ještě přikládám hodně stručný pseudokód.

/** Metoda paint() třídy MyCanvas extends JComponent. */
public void paint(Graphics g) {
    g.drawImage(myBufferedImage, 0, 0, null);
    if (drawing) { // případ, kdy je stisknutá myš a aktivní kreslení
        drawShape(g);
    }
}

// vykreslení tvaru do obrázku - vykreslení a uložení tvaru při uvolnění myši
drawShape(myBufferedImage.getGraphics()); drawing = false;


Budeš si samozřejmě muset hodně pohrát s událostmi myši a tím, jak bude fungovat metoda drawShape(). A nezapomeň volat repaint().
barns
Profil *
Díík, i když čekáš ode mne, že postavím rodinný dům, když umím stěží postavit stan ... Proto by se mi nejdřív sešlo něco o tom canvasu a o tom křeslení, jak to funguje a až pak můžu vytvořit to, co mi navrhuješ Ty ....
WanTo
Profil
V tom případě doporučuji knížku Učebnice jazyka Java od Pavla Herouta, druhý díl popisující tvorbu GUI. Úplné základy ti tu vysvětlit nedokážu.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: