MeHow Opublikowano 26 Kwietnia 2006 Zgłoś Opublikowano 26 Kwietnia 2006 Otóż mam taki problem. Piszę sobie projekt z javy i nie wiem jak zrobić coś takiego, aby na panelu dzięki wywołaniu metody draw() klasy Graphics umieścił mi jaką przeze mnie zdefiniowaną figurę. Przykładowo chciałbym aby był to krzyżyk, ale nie metodą, że wywołam dwa razy draw, dla różnych linii, lecz wolałbym aby wywołanie draw( new Krzyzyk() ) samo wykonywało mi malunek dzięki wiedzy, która zawarta jest w klasie. Podejrzewam, że trzeba implementować jakiś interfejs, lecz niestety nie wiem jaki :), ponadto nie wiem jakie funkcje należy przeciążyć. Jeśli ktoś mógłby mi pomóc, byłbym bardzo wdzięczny. Pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 28 Kwietnia 2006 Zgłoś Opublikowano 28 Kwietnia 2006 ja dziedziczyłem swoją klasę po panelu... a następnie przeciążyłem jej metodę paint() bodajże wstawiając tam to co chciałem rysować... PS. moteda paint() wywołuje się odgórnie sama z klasy nadrzędnej... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 28 Kwietnia 2006 Zgłoś Opublikowano 28 Kwietnia 2006 (edytowane) Hmmm... A czy moge zrobic tak, zeby panel mial przezroczyste tlo? Chodzi Ci o metodę paintComponent, bo takiej metody uzywam do malowania. Dokładnie używam public void paintComponent( Graphics g ) { a w środku do odmalowania czegoś używam draw(punkt); EDIT!!!!!!!!!!!!!!!! zrobilem sobie taka klase: import javax.swing.*;import java.awt.*;import java.awt.geom.*;import java.util.*;import java.awt.event.*;public class Ble extends JPanel{ public Ble() { super(); // TODO Auto-generated constructor stub } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; g2.draw( new Line2D.Double( new Point2D.Double( 5,5 ), new Point2D.Double(40,40 ))); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub }} i gdy chce ja w innym panelu wymalowac poprzez g.draw(to_cos); gdzie g jest typu Graphics, to dostaje komunikat od kompilatora, iż The method draw(Shape) in the type Graphics2D is not applicable for the arguments (Ble) GlownyPanel.java Co z tym począć? Podejrzewam, że należy zaimplementować interfejs shape, ale co w nim za co odpowiada. Czy mógłbyś mi Pelzaku zdradzić tą słodką tajemnicę :) ? Edytowane 28 Kwietnia 2006 przez MeHow Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 28 Kwietnia 2006 Zgłoś Opublikowano 28 Kwietnia 2006 prawdę mówiąc to ja się głowiłem na tym kilka dni... Bo mialęm też rysować jakieś autka na wątkach (prostkąty) jeżdzące po drodze... Szczerze.. to nie lubię javy... Sporo osób się u nas na 5 roku rzuciło na ten język, ostatnio w mojego promotora... siedział zmartwiony koleś który zaczał pisać wrcaby w javie... i poległ... Dlatego ja postanowiłem pisać w C++ bo tam przynajmniej wiem co się dzieje prawie dokładnie :) u Siebie mam coś takeigo.. nie każ mi tego tłumaczyć.. gdyż jak mówię.. 30% czasu z moich laborek poświecałem na rozwiązanie problemu a 70% na rozwiązanie problemów z JAVunią :lol: class Land extends JPanel{private Droga road1=new Droga(24,30,300,0,cross); // droga pozioma protected void paintComponent(Graphics g) { super.paintComponent(g); //czyszczenie tła road1.Draw(g); }to się najprawdopodobniej wywołuje samo... z menagera obsługi swingów czy czegoś tam... natomiast klasa Droga zawierająca metodę draw rysującą jakieś smiecie.... class Droga { public void Draw(Graphics g) { g.setColor(Color.gray); g.fillRect(firstCellX,firstCellY,roadSize*cellCount,roadSize); } Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...