Autor | Zpráva | ||
---|---|---|---|
barns Profil * |
#1 · Zasláno: 19. 1. 2010, 18:12:24
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 |
#2 · Zasláno: 19. 1. 2010, 18:47:33
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 * |
#3 · Zasláno: 20. 1. 2010, 15:15:51
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 |
#4 · Zasláno: 20. 1. 2010, 18:41:08
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.
|
||
Časová prodleva: 14 let
|
0