Jak rysować na panelu?

0

Witam
Mam taki problem chciałbym narysować wykres na panelu (JPanel) i parę innych rzeczy. Czy da się zrobić żeby obrazek nie wychodził poza panel i żeby np x=0 i y=0 były w odpowiednim rogu panelu?
Jak pobierać tylko rozmiary panelu i nie wychodzić poza?
Z góry bardzo dziękuje za odpowiedź i pozdrawiam</image>

0

Nie czytałem wcześniej ale przejrzałem teraz nie za bardzo mi to pomogło. Chodzi o to: mam aplet na nim przyciski i panel chciałbym rysować tylko na nim i czy to da się zrobić a jeśli tak to jak?

PS
Dzięki za odpowiedź.

0

ja też miałem ostatnio podobny problem i zorbiłem klasę dziedziczącą po Canvas:

import java.awt.*;

class Klasa extends Canvas{
        
    public Klasa() {
           super();
           this.setVisible(true);
           this.setSize(1000,700);           
    }
    
    public void paint(Graphics g){
          //tu dajesz funkcje rysujące
}

później jeśli masz np. JPanel o nazwie panel, to w miejscu kodu, gdzie musisz coś narysować piszesz:

Klasa k = new Klasa();
panel.add(k);
panel.repaint();
panel.validate();
panel.revalidate();

nie musisz używać wszystkich 3 funkcji: repaint(), validate(), revalidate(). Napisałem tylko, żebyś z nimi pokombinował przy odrysowywaniu panelu ;-)

pozdrawiam

0

Działa :) hehe
Dzięki bardzo jestem o jeden mały kroczek do przodu ;)

0
nightrain napisał(a)
panel.repaint();
panel.validate();
panel.revalidate();

Tak jak przedmowca napisal uzycie wszystkich 3 jest nadmiarowe... lepiej poczytaj o przeznaczeniu kazdej z nich. Przy wiekszej aplikacji mozesz zauwazyc wyrazna roznice

Jarekk napisał(a)

Jak pobierać tylko rozmiary panelu i nie wychodzić poza?

Odpowiedz masz w API - metody getSize() i getBounds()
Jesli chodzi o rysowanie - poczytaj doslownie kilka postow wczesniej.
http://4programmers.net/Forum/viewtopic.php?id=106789

pozdrawiam

0

Z pobieraniem rozmiarów panelu już nie mam problemu i dzięki klasie Klasa rysuje na panelu tylko teraz niechcę mi się odświeżać po np ruszeniu suwaka użyłem panel.repaint(); zresztą pozostałych też próbowałem.

Czytałem tego wcześniejszego posta ale nie pomogło mi to zbytnio...

0
Jarekk napisał(a)

Z pobieraniem rozmiarów panelu już nie mam problemu i dzięki klasie Klasa rysuje na panelu tylko teraz niechcę mi się odświeżać po np ruszeniu suwaka użyłem panel.repaint(); zresztą pozostałych też próbowałem.

Czytałem tego wcześniejszego posta ale nie pomogło mi to zbytnio...

heh no ja miałem identyczny problem niestety nie udało mi się go rozwiązać;)
tzn akurat w piątek oddawałem program na zaliczenie, który robiłem pod windą i pod windą żeby odświeżyć widok musiałem przełączyć się na chwilę do innego programu a potem z powrotem do moje aplikacji, tudzież zrzucić ją na pasek i z powrotem zmaksymalizować okno ;-P

po rekompilacji w laboratorium (pod debianem) wszystko działało normalnie i panel normalnie się odświeżał ;] byłem w szoku, ale niestety nie wiem dlaczego tak się działo :-D

0

Odświeżanie już śmiga ;) Mam teraz pytanie da się żeby ten obiekt klasy Klasa był zawsze takiego rozmiaru jak panel tzn czy da się zrobić rozciąganie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1