PDA

Visualizza versione completa : [JAVA] GUI e Swing


Downloader
11-05-2005, 15.53.41
Potreste darmi una veloce spiegazione su GUI e Swing, perchè non ho capito una mazza della scpiegazione che mi hanno fatto.

Cioè ad esempio cos'è una window, un frame (tutte ste cose qua).
Come creare una GUI, cioè devo generare oggetti di che tipo??

GUI e Swing vengono usate per le interfaccie grafiche, ma tra loro la differenza sostanziale è che le swing hanno gli stessi nomi delle classi GUI ma con la J davanti e con qualche metodo in piu, giusto??.

Dav82
21-05-2005, 02.58.56
adesso devo andare a letto... :D


Cmq... GUI = Graphical User Interface, è l'interfaccia grafica.

Java fornisce delle librerie per implementare la GUI, e le più famose (e old) sono AWT e SWING.
Le AWT sono un po' più schifosine, mentre le swing (quelle con la x :p), sono un pelo più carine... ma ne esistono anche altre, SWT per esempio :)

Il discorso sulla grafica è leggermente lungo e complicato, e l'ora non è delle più adatte... ti rimando a domani magari ;)

Downloader
21-05-2005, 15.21.23
Intanto ho gia letto qualocsa e ho gia le idee piu chiare.
Prima di scrivere sto post non sapevo manco bene la differenza tra la classe window e quella frame mo so qualcosina di teorico.

Mi manca la parte pratica.

Dav82
21-05-2005, 19.45.07
Scusami, sono ancora di frettissima (oh, mo' vengono 20 dolci pulzelle a casa mia :cool: ): io ho imparato per via pratica... ho aperto NetBeans, click sull'editor visuale di interfacce grafiche (nella versione 4.0 è sotto Window -> GUI Editing -> Palette, ovviamente in un file creato con New -> File -> a sx Java Gui Forms e poi scegli quello che vuoi) e via a disegnare con drag&drop... dopo smanettamenti vari, quando ero contento del risultato ottenuto, andavo a leggermi il codice generato :)


Ocio che nelle parti disegnate in automatico, NetBeans non ti permette di modificare il codice: basta che chiudi il relativo file, lo apri con WordPad, e togli i GEN-BEGIN e GEN-END che NetBeans ti ha piazzato nei file... e sei a posto ;)


Io ho imparato le basi così, poi ovviamente mi sono letto un libro :)

Downloader
06-08-2005, 18.55.18
Ok, ho fatto questo:


import java.awt.*;

public class Interfaccia extends Frame
{
Button bo = new Button("Clicca qua!");
TextArea ta = new TextArea("Inserisci testo!!");


public Interfaccia()
{
add(bo);
bo.setSize(100,100);
add(ta);

this.setVisible(true);
this.setTitle("Downloader!!");
this.setSize(500,250);
this.show();
}


public static void main(String[] args)
{
Interfaccia a = new Interfaccia();
}


}


Diciamo che mi sto iniziando ad impratichire un pochino (ma molto ino, java è ancora un concetto

quasi sconosciuto :D), comunque prima di passare alla parte degli eventi (una parte buia buia

buia) vi chiedo:
come faccio ad ordinare tutti questi oggetti grafici??
So che esistono dei metodi (giusto??) tipo borderlayout, flowlayout, ecc. ma esiste un modo per ordinarli in modo diciamo "casareccio"?
Oppure per far quello che dico io devo implmentare più tipi di Layout?

tnx! ;)

Downloader
31-08-2005, 23.52.05
up! :)

Dav82
01-09-2005, 01.08.09
I Layout sono dei modi di disporre gli oggeti grafici in una finestra... piuttosto che stare a spiegarteli io qua uno per uno, penso sia molto più intuitivo che tu apra netbeans con l'editor grafico che ti ho lasciato su, e una volta creato un panello tu scegli il layout da applicare: c'è un'anteprima molto esplicativa :)

Prova un po' a smanettarci, adesso non ho veramente il tempo per spiegarteli uno per uno, ti dico che a parer mio quello più gestibile è il borderlayout, ci fai di tutto senza impazzire (Y)

Dav82
01-09-2005, 04.20.10
Sto aspettando che mi torni un cargo sul pianeta :o, ho due minuti per buttarti giù qualche idea :)


Senza scendere in classificazioni più o meno dettagliate dei componenti grafici offerti da Java (con awt, swing, swt, ...), devi sapere che ci sono degli oggetti "contenitore" di altri oggetti, ossia servono a creare una base su cui disporre altri oggetti, eventualmente con un giochino di scatole cinesi.

Prendi ad esempio una qualsiasi finestradi un qualsiasi programma: c'è la finestra principale, in questa ci sarà la barra del titolo, la barra degli strumenti, la barra di stato, la parte centrale.. quindi la finestra principale non è nient'altro che la base su cui vengono aggiunti i veri componenti.
Di più: nella barra dei menu ci sono le varie voci, che sono dei menu anch'essi, ogni menu ha altre voci, con varie sottovoci, alcune di queste magari hanno dei pulsanti di selezione... insomma, tutto un giochino di contenitori che hanno al proprio interno oggetti veri e propri (pensa ad un pulsante) o altri contenitori (un menu che contiene un sottomenu).


Per iniziare.
La base di tutto in Java, almeno per come la vedo io, è un Frame. All'interno ci puoi piazzare dei pannelli (JPanel) per dividere l'area della finestra secondo le tue esigenze.
All'interno di questi poi distribuirai i vari componenti.

Rapida panoramica sui vari layout:

- flow layout: anche detto "layout alla ca@@o di cane", utilità pari a zero secondo la mia esperienza, mi rifiuto di descriverlo :D

- borderlayout: dal peggio al meglio, è secondo me una delle migliori cose che ci siano; divide lo spazio nei settori North, East, South, West e Center. Posto che tu abbia settato delle dimensioni per le regioni di bordo, ridimensionando la finestra queste rimarranno fisse in dimensioni, mentre verrà espansa solamente la regione centrale. Ovviamente le regioni North/South verranno allargate/strette in occasioni di allargamenti/restringimenti orizzontali della finestra, analogamente per East/West: questo è il best layout (Y)

- gridlayout: ti permette di divere lo spazio in un determinato numero di righe e colonne, ocio che è come un foglio di excel, ma senza l'unione delle celle.. in poche parole se vuoi fare una cella più grande e una più piccola, ti attacchi :D e devi ricorrere a magheggi ed incastri con altri layout


... sono arrivati i cargo, è tardino, vado a letto :p

Per gli altri a domani (=> fai un UP, altrimenti col cavolo che mi ricordo :D :S), ma non ti aspettare cose mirabolanti, il meglio è già arrivato ;)

Dr_House
04-09-2005, 03.36.14
Originariamente inviato da Dav82
Sto aspettando che mi torni un cargo sul pianeta :o, ho due minuti per buttarti giù qualche idea :)

Scusa la domanda, ma per caso ci si trova su Ogame? :D

Comqunque a proposito di GUI in Java.

Io ho a disposizione Eclipse e Netbeans non che JCreator

Quale dei tre consigliate? fino a questo momento non ho avuoto molto a che fare con la SWING di Java, ma presto si dovrà pur iniziare no?

Dav82
04-09-2005, 04.07.07
Ovviamente su OGame :cool:

Io ti consiglio NetBeans: JCreator mollalo come la pesta, Eclipse lo usano in molti ma a me non ha fatto una buona impressione, mi trovo molto meglio con NB, sarà abitudine eh :)

Dr_House
04-09-2005, 10.26.32
OhOhOh un Ogemiano :P anche io mi trovo li!

Grazie del consiglio! allora disinstallo JCreatore ed Eclipse.. anche se ho sentito che Eclipse ha delle estenzioni per il C che sotto linux farebbero comodo...

Downloader
04-09-2005, 11.30.51
Ennoennoenno non toccarmi Jcreator :mad:

:crying:

Dav82
04-09-2005, 12.11.12
Originariamente inviato da Downloader
Ennoennoenno non toccarmi Jcreator :mad:

:crying:

Bhe sai, quando un compilatore ti cancella i file .java per sostituirli con i .class, sì sì hai capito bene, CANCELLA i file .java nel processo di compilazione, quando va in panne se gli copi un tuo file .class dentro, quando se aggiorni un sorgente .java dalla shell di windows andando a sovrascrivere il vecchio file e poi compilando lui non compila, pur essendo questo file inserito nel progetto beh... questo è un programma di M€rd@! Ma al 100%!


Da quel momento ho eradicato dal mio pc ogni cosa che potesse avere a che fare con JCreator, e non ho più neanche controllato come fosse peggior... emh, diventato :D