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>
a czytales chociaz API?!?!
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JComponent.html
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ź.
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
Działa :) hehe
Dzięki bardzo jestem o jeden mały kroczek do przodu ;)
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
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...
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
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?