PDA

View Full Version : scroller in java


cangaceiro
24-01-2002, 22:50
allora ragazzi ho questi piccolissimi problemini:
a) faccio una nuova finestra solo che non ci sta dentro tutto giusto? allora ci metto una scrollbar laterale e... ma cazzo quando muovo la scrollbar non si muove la finestra, io catturo l'evento (almeno spero) però non so come ridisegnare la finestra non c'è una specie di update() ??
b) lo so potrei usare ScrollPane però non mi lascia mettere gli oggetti dove dico io, ovvero non mi lascia usare setLayout(null), quindi se riuscite a spiegarmi come funziona ScrollPane dovrebbe essere uguale.
c) non riesco a chiudere le finestre!! quando clicco sulla X!! non so qual'è l'evento da catturare e nemmeno il metodo per chiudere solo la finestra e non l'intero programma!!

per ora è tutto ma penso che nei prossimi giorni incontrerò nuove e numerose difficoltà, quindi sempre all'erta!! :)

ciao e grazie a chiunque vorrà aiutarmi

bellino
25-01-2002, 08:45
Ciao, usare lo scrollpane è il modo più semplice, però devi posizionare i tuoi oggetti grafici su un panel e poi settare sullo scrollpane il panel come viewport. In pratica il pannello sarà il luogo dove giaciono gli oggetti grafici e lo scrollpane la finestra attraverso cui li osservi, i metodi dello scrollpane ti permettono di avere delle scrollbar automatiche, se non hai capito ciò che ho detto (visto che mi sono spiegato molto male) chiedimi pure delucidazioni.
Ciao.
Gabriele.

kingv
25-01-2002, 09:36
Per la prima parte e' buona la risposta di bellino.

Per quanto riguarda l'evento di chiusura devi intercettare un evento di classe WindowEvent. cleati una sottoclasse di WindowAdapter e fai l'overriding di windowClosing(WindowEvent).
All'interno chiama il metodo dispose() della Frame che vuoi chiudere. Puoi chiamare anche setVisible(false), ma così NON distruggi il frame.

Naturalmente ricordati di registrare il tuo listener.. :)

bellino
25-01-2002, 10:03
Mi ero dimenticato il punto C, sorry.
Un grazie a kingv per l'ottima risposta.
Gabriele.

cangaceiro
25-01-2002, 19:20
ok ragazzi mi son accorto di essere veramente un coglione! :)
il metodo dispose() c'era pure nel libro ma io non avevo capito che era quello che cercavo, mentre per lo scroller ho risolto risettando tutti i setBounds della finestra nel metodo invocato quando sposto la scrollbar, tanto i setBounds cmq dovevo metterli e così mi creerò un metodo apposta per loro. con Scrollpane magari era più semplice però non lo so usare e siccome ho intuito quello che vuoi dire bellino ma dovrei provare rimando a tempi migliori, intanto ho qualke altro bel quesito!! :D
a) qual'è l'evento invocato quando cambio la grandezza della finestra
b) come faccio a far aprire una finestra subito a tuttoschermo
c) quale evento viene invocato quando cambio la scelta della classe choice?
pensavo fossero tutte cazzate ma non son riuscito a trovarle in giro e visto che siete ben disponibili ne approfitto! :)

l'ultima è la più impegnativa!!
d) come faccio a creare una choice editabile, ho provato con choice.add(new TextField()) ma mi dice che non esiste il costruttore (che strano!), ho provato choice.add((new TextField()).getText()) ma ovviamente mi costruisce solo una scelta vuota e non una editabile, ho provato choice.isEditable(true) ma la fortuna non mi ha assistito! boh se mi sapete aiutare voi

cmq non illudetevi che questa sia la più difficile penso domani o dopodomani di farvi la domanda del secolo intanto ci lavoro su un po' io!
ciao e grazie ancora!
:cool:

bellino
28-01-2002, 08:40
Ciao, sarò un po' stringato per questioni di tempo:

a- componentResized
b- con il metodo setSize gli passi i valori della risoluzione dello schermo (Toolkit.getDefaultToolkit().getScreenSize().width per la larghezza, height per l'altezza)
c- iteStateChanged
d- in questo momento non so dirtelo, è una cosa che avevo utilizzato un po'di tempo fa, appena riaffiora alla mia memoria te lo faccio sapere.
Ciao.
Gabriele.

kingv
28-01-2002, 09:47
Quando risponde bellino mi rimangono solo gli scarti.. :)


Cmq per l'ultima domanda nella classe javax.swing.JComboBox c'e' un setEditable(boolean)
Saluti

bellino
28-01-2002, 10:03
Grazie kingv, vedo che sai sempre cosa rispondere :), io faccio ciò che posso, sono in gran parte autodidatta, se non sono molto preciso corregimi pure, no problem.
Ciao.
Gabriele.

cangaceiro
28-01-2002, 19:11
uè ragazzi ma siete dei fighi! :)
beh grazie finalmente ho risolto qualke altro problema, però ne ho qualkuno di nuovo! :)
premetto che se vi rompete le palle di rispondermi potete benissimo mandarmi a cagare! :)
allora vediamo:
a) non mi scende la tendina della classe JComboBox!
b) quando aggiungo delle drawLine mi sparisce la ComboBox!!

per il resto per ora sono ok, sono riuscito pure a stampare che pensavo fosse la cosa più difficile!! :)

vi ringrazio ancora
ciao

cangaceiro
30-01-2002, 19:25
ok, le JComboBox le ho eliminate, però ora ho un altro problemino!!
devo stampare un immagine, ho provato con le seguenti righe di codice....

Image img;

img = Toolkit.getDefaultToolkit().createImage("Mauro.jpg");

while (prepareImage(img, this));

g.drawImage(img, InizioX, InizioY, this);

mettendo la mia classe extends Container per poter avere imageUpdate (che spiegazione di merda!!)

mi scrive java.lang.OutOfMemory Exception <<no stack trace available>> ovv. lo compila senza problemi.

allora dico io visto che non son capace a stampare provo a disegnarla su skermo sta immagine!!

public void paint (Graphics g) {

Image img;

img = Toolkit.getDefaultToolkit().createImage("Mauro.jpg");

g.drawImage(img, 100, 100, this);

}

questa volta senza estendere Container ma Frame (lo era già da prima)

ora il mio sospetto è che voglia sapere anche la cartella dove si trova l'immagine ma io non so come dirgliela!!!
Ho girato tutta la jdk documentation ma non son riuscito a capire nulla!!
se riuscite ad aiutarmi voi, riesco a trovare solo esempi con le applet ma lì è fin troppo facile, qui invece è fin troppo difficile!! :)
ciao e grazie ankora per tutto l'aiuto che mi state dando

bellino
31-01-2002, 08:34
Ciao, forse non è proprio quello che cerchi, ma io per visualizzare un'immagine prima creo un oggetto Image :

Image miaimmagine = Toolkit.getDefaultToolkit().getImage("C:\\miaimmagine.gif");

poi istanzio questa classe passandogli la Image creata prima:

class ImagePanel extends JPanel
{
Image image;

public ImagePanel(Image image)
{
this.image = image;
}
public void paint(Graphics g)
{
super.paintComponents(g);
g.drawImage(image,0,0,400,400, this);
}
}

Forse un po' contorto ma funziona!
Ciao.
Gabriele.

cangaceiro
02-02-2002, 18:51
non ci riesco!! :((
non importa continuerò a provare, intanto grazie bellino e kingv, il vostro aiuto è stato prezioso, spero di poter ricambiare al più presto.
ciao :)

bellino
04-02-2002, 08:21
Ciao, forse sono io che mi sono spiegato male, prima crei questa classe:

class ImagePanel extends JPanel
{
Image image;

public ImagePanel(Image image)
{
this.image = image;
}
public void paint(Graphics g)
{
super.paintComponents(g);
g.drawImage(image,0,0,400,400, this);
}
}

Poi quando ti serve l'immagine istanzi questa classe e ottieni un oggetto che puoi aggiungere ad un frame o pannello. Per ottenere l'immagine:

Image miaimmagine = Toolkit.getDefaultToolkit().getImage("C:\\miaimmagine.gif");

Ciao.
Gabriele.