jak zrobić pasek przewijania?

0

Witam,

próbuję zrobić paski przewijania i mi nie wychodzi, choć to pewnie dość łatwe.
Zamieszczam programik wyświetlający obrazek(obrazek.jpeg) co tu trzeba dodać, żebym miał pasek przewijania? siedzę nad tym już ponad 8 godzin z tutorialem Javy i szukam w google, ale to co piszę się albo nie kompiluje, albo jak już się skomiluje to przy uruchamianiu pokazuje błędy :-[ :|
Proszę pomóżcie.

import javax.swing.*;
import java.awt.*;

class Program{
public static void main(String args[]){
okno o=new okno();
}
}

class okno extends JFrame{
public okno(){
setSize(1000,700);
Panel panel=new Panel();
add(panel);
setDefaultCloseOperation(3);
setLocationRelativeTo(null);
setVisible(true);
}
}

class Panel extends JPanel{
public void paintComponent(Graphics g){
ImageIcon im=new ImageIcon("obrazek.jpeg");
Image img=im.getImage();
g.drawImage(img,10,10,null,null);
}
}
0

czytałem to, przeglądałem załączone do toturiala przykłady, próbowałem zrobić zgodnie z tym i nie idzie [glowa] najwidoczniej czegoś nie rozumiem(trudne nauki początki)... dodaje komendy, które jak mi się wydaje powinny tam być, no i lipa :-[ [glowa] :-[ [glowa] :-[ [glowa]

0
add(new JScrollPane(panel));    // zamiast add(panel);

nie działa?

0
wpisałem nick napisał(a)
add(new JScrollPane(panel));    // zamiast add(panel);

nie działa?

bez efektu... nic się nie zmieniło, brak paska przewijania

0

Paski sie pojawią jak bedą potrzebne, jeśli chcesz by były od razu, to

	
add(new JScrollPane(panel,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
0

Też nie zadziała, paski się pojawią, ale nigdy nie będą aktywne. Próbowałem ustawiać w metodzie paintComponent() rozmiar panelu na rozmiar obrazka, jednak też bez efektu.

Myślę, że trzeba się pobawić layoutami i z ich pomocą konstruować GUI, wtedy nie będzie takich niespodzianek.

0
bogdans napisał(a)
	
add(new JScrollPane(panel,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));

teraz dla odmiany nie chce się program uruchomić... kompiluje się, ale przy uruchomieniu wyskakuje błąd

0

Zdradzisz jaki błąd?

0

a nie, przepraszam... nie wyświetla błędu... coś musiałem spaprać poprzednio... są paski przewijania, ale nie działają:) no ale to, że są to już duży sukces :-)

widać potrafię porobić błędy nawet w kopiowaniu komendy i wklejaniu do kodu... taki ze mnie zdolny typ ;-)

[green] działa:D

trzeba dać

add(new JScrollPane(panel)); 

zamiast add(panel)

a w class Panel umieścić

setPreferredSize(new Dimension(604, 717));

, liczby to rozmiar obrazka:)

Dziękuję Wam za pomoc:) Dziekuję, dziękuję, dziękuję:)

0

Dobrze kombinowałem, ale nie tą metodą ustawiałem :P

Ale i tak radzę zapoznać się z layoutami, lepiej teraz niż później ;)

Kolejna rada to:
http://java.sun.com/docs/codeconv/
lub po polsku:
http://www.g2inf.one.pl/referaty/Java%20code%20conventions.ppt

Oraz mam pytanie: dlaczego ten kod w ogóle się kompiluje skoro nie ma żadnej klasy publicznej w pliku?

0
wpisałem nick napisał(a)

dlaczego ten kod w ogóle się kompiluje skoro nie ma żadnej klasy publicznej w pliku?

klasa główna musi być publiczna i w przypadku jak nie jest poprzedzona modyfikatorem public to i tak kompilator uznaje ją za publiczną.... przynajmniej tak mi się wydaje

dzięki za linki... chętnie dowiem się co to layoauty:)

0

@wpisałem nick zadał dramatyczne pytanie

Oraz mam pytanie: dlaczego ten kod w ogóle się kompiluje skoro nie ma żadnej klasy publicznej w pliku?

WTF, plik nie musi zawierać żadnej klasy publicznej.
@tompej napisał

klasa główna musi być publiczna i w przypadku jak nie jest poprzedzona modyfikatorem public to i tak kompilator uznaje ją za publiczną.... przynajmniej tak mi się wydaje
obie części tej wypowiedzi są nieprawdziwe. Klasa główna nie musi być public, klasa zdefiniowana bez modyfikatora public, nie jest domyślnie public.

0
bogdans napisał(a)

obie części tej wypowiedzi są nieprawdziwe. Klasa główna nie musi być public, klasa zdefiniowana bez modyfikatora public, nie jest domyślnie public.

no to w takim razie jest package... kompiluje sie z tym modyfikatorem, a nawet z private...
nie rozumiem czemu wszędzie w książkach w przykładach dają public przed klasą główną, skoro ona wcale public być nie musi, żeby działać poprawnie.

0

tak tylko podziękuje :)
new JScrollPane(panel2,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS));
grzecznie rozwiązał mój problem po dodaniu do ramki :)

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