PDA

View Full Version : [Java]Creare un'applicazione


Giovanni Tavella
24-07-2010, 16:17
Devo creare un'applicazione o un piccolo gioco per l'esame di "Laboratorio di programmazione".
Esempio:
applicazione che gestisce le vendite di un negozio che vende articoli sportivi(con semplici metodi del tipo aggiungi articolo e vendi articolo).
Per quanto riguarda la classe "negozio" e "articolo"(e relativi metodi)non ho problemi, ma devo associare a questo "negozio " una sua (interfaccia) grafica.

Mi sarebbero d'aiuto dei "vostri appunti" o esempi su come sviluppare la parte grafica di una qualsiasi classe .
:muro: :muro:

Spero di esserre stato chiaro:mc: :mc:
:help: :help:

fero86
24-07-2010, 17:52
Mi sarebbero d'aiuto dei "vostri appunti" o esempi su come sviluppare la parte grafica di una qualsiasi classe .
:muro: :muro: con Swing: http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/index.html

anonimizzato
24-07-2010, 18:55
Come ti ha suggerito fero86, per Java la cosa più semplice e ovvia è utilizzare Swing per la creazione della tua interfaccia grafica.

Ti conviene cominciare a dargli un'occhiata e a seguire qualche tutorial, poi, nel caso, fai qualche domanda più specifica perchè chiedere interi "appunti" (o soluzioni pronte) di terzi su esercizi d'esame non è utile per te ed è vietato dal regolamento. ;)

Giovanni Tavella
24-07-2010, 19:49
chiedere interi "appunti" (o soluzioni pronte) di terzi su esercizi d'esame non è utile per te ed è vietato dal regolamento. ;)

lo so :) io chiedevo appunti infatti(esempi su come creare bottoni, pannelli e cose simili..non la soluzione del mio esercizio.

Comunque ora provo a vedere come funziona questa Swing :stordita:

ndakota
24-07-2010, 20:42
http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/uiswing/components/index.html

WarDuck
24-07-2010, 21:11
Faresti molto prima ad usare un editor di GUI come NetBeans ;).

Giovanni Tavella
25-07-2010, 10:29
Raga tutte queste "lezioni" che mi avete suggerito utlizzano NetBeans IDE, va bene ugualmentye se uso Eclipse ?:help:

ndakota
25-07-2010, 11:02
Se parli del mio link ti sbagli, puoi anche programmare senza IDE per quanto gli riguarda :O

WarDuck
25-07-2010, 12:34
Raga tutte queste "lezioni" che mi avete suggerito utlizzano NetBeans IDE, va bene ugualmentye se uso Eclipse ?:help:

Provalo almeno Netbeans ;).

pernacentus
26-07-2010, 08:58
Raga tutte queste "lezioni" che mi avete suggerito utlizzano NetBeans IDE, va bene ugualmentye se uso Eclipse ?:help:

Anche io sono un "eclipsiano", ma per quanto riguarda le interfacce grafiche in confronto a Netbeans non c'è paragone. Poi per usare un editor di interfacce su Eclipse dovresti installarti un plugin aggiuntivo chiamato Jigloo.

Giovanni Tavella
26-07-2010, 10:12
Provalo almeno Netbeans ;).

Ho installato Netbeans, ed effettivamente per quanto riguarda le GUI mi è sembrato molto meglio di eclipse.
Il mio problema è che , dovendo sostenere l'esame di "lab.di programmazione" sono costretto ad usare eclipse

tuccio`
26-07-2010, 13:45
e probabilmente vogliono anche che tu impari a scrivere le gui a mano, che non è chissà quale grande impresa, soprattutto grazie alla documentazione sun (oracle whatever :E)

banryu79
26-07-2010, 14:27
Il mio problema è che , dovendo sostenere l'esame di "lab.di programmazione" sono costretto ad usare eclipse

IDE a parte (Netbeans/Eclipse/altri...) hai vincoli circa la libreria grafica da usare?
Userai Swing [usata dal GUI builder di Netbeans] o SWT [usata dal GUI builder di Eclipse]?
Il codice lo puoi anche scrivere a mano, ma sarebbe opportuno capire quale libreria specifica userai. Controlla di non avere vincoli in tal senso.

Se puoi e vuoi usare Swing:
c'è un ottimo tutorial introduttivo (2 orette di lettura) proprio su questo forum, scritto da PGI.
Guarda nella sotto-sezione [Corsi, Tutorial e FAQ].

Giovanni Tavella
26-07-2010, 17:44
hai vincoli circa la libreria grafica da usare?
.

No non ho vincoli ma il codice devo per forza scriverlo a mano:( ..

Ho provato a fare una piccola applicazione ,che riceve un numero intero(in una istanza JTextField) e al click di un Bottone(JButton) scriva su un JLabel il quadrato di questo numero.
Ma ho dei dubbi .

Scrivo il codice:


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

public class PROVA {
public static void avvia(){

JFrame frame = new JFrame("prova ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel Panel=new JPanel();

JLabel Label=new JLabel("SCRIVIMI un numero ");
JLabel Labeldue=new JLabel("qui scriverò il numero al quadrato");

JTextField Testo=new JTextField(10);

JButton Button=new JButton("il bottone");

Panel.add(Label);
Panel.add(Labeldue);
Panel.add(Testo);
Panel.add(Button);

frame.getContentPane().add(Panel);
frame.pack();
frame.show();


//*i miei dubbi iniziano qui, dove dovrei scrivere il codice che, al click di"Button" prende il numero da "Testo"( JTextField ) lo moltiplica per se stesso e lo scrive su "Labeldue"*/

//ditemi dove sbaglio perché mi da errore

Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Moltiplica(evt); }

});

public void Moltiplica(java.awt.event.ActionEvent evt) {

int num = (int)((Double.parseDouble(Testo.getText()));

int pow=num*num;

//MODIFICA IL TESTO Di Labeldue:
Labeldue.setText(pow + ": è il suo quadrato");
}//fine


public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
avvia();
}
});

}//fine main
}//FINE_CLASSE



:doh: :help: :help:

banryu79
26-07-2010, 18:28
Ho preso il tuo codice e l'ho modificato così:

import javax.swing.*;

public class PROVA
{
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
avvia();
}
});
}//fine main

public static void avvia() {

final JFrame FRAME = new JFrame("prova ");
FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel();

JLabel label = new JLabel("SCRIVIMI un numero ");
final JLabel LABEL_DUE = new JLabel("numero al quadrato");

final JTextField TESTO = new JTextField(10);

JButton button = new JButton("il bottone");
button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
int num = (int) (Double.parseDouble(TESTO.getText()));
int pow=num*num;
//MODIFICA IL TESTO Di Labeldue:
LABEL_DUE.setText(pow + ": è il suo quadrato");
}
});

panel.add(label);
panel.add(LABEL_DUE);
panel.add(TESTO);
panel.add(button);

FRAME.getContentPane().add(panel);

SwingUtilities.invokeLater(new Runnable() {
public void run() {
FRAME.pack();
FRAME.setVisible(true);
}
});
}
}//FINE_CLASSE



Due osservazioni.
La prima sullo "stile"/"convenzioni" con cui si scrive il sorgente (faccenda assolutamente personale, ma conoscere e applicare le convenzioni risulta utile quando si scambia codice con altri programmatori, aiuta a capirsi con minore fatica).

I nomi delle variabili dei campi e dei metodi iniziano con la lettera minuscola e seguono la convenzione nota come camelCase (http://it.wikipedia.org/wiki/CamelCase).

Se la variabile è final viene scritta in maiuscolo, usando l'underscore come separatore tra le parole.

La seconda osservazione è il fatto che la dichiarazione del tuo metodo Moltiplica era errata rispetto al modo in cui ti proponevi di usarlo: per invocarlo da un contesto statico avresti dovuto dichiararlo come metodo statico.
I metodi non-statici, cioè i metodi di istanza sono i metodi di cui è dotata l'istanza di una classe a runtime; sono cioè visibili dalle singole istanze (che li condividono), ma non dalla classe in quanto tale.
I metodi statici invece, sono metodi di classe di cui è dotata la classe in quanto tale; un metodo statico è visibile anche alle eventuali istanze di una classe, ma non è neccessaria l'istanza per accedervi.

Infine, sconsiglio l'invocazione del metodo show per vsualizzare un frame, in quanto deprecato.
Usa invece setVisible(true) per visualizzarlo e setVisible(false) per nasconderlo di nuovo, al posto dei vecchi show/hide.
Chiamare il metodo pack() o setVisible() poi, ha il notevole effetto di rendere il frame visualizzabile: per fare le cose in modo pulito, data l'architettura single thread di Swing, è neccessario invocare questi metodi nell'Event Disptacher Thread.
Maggiori dettagli (molto chiari) li trovi nelle prime 3-4 pagine di quel tutorial di PGI che ti ho indicato.
Io ti consiglio vivamente di leggerlo: ti farà risparmiare un sacco di tempo :)

Giovanni Tavella
26-07-2010, 19:11
Maggiori dettagli (molto chiari) li trovi nelle prime 3-4 pagine di quel tutorial di PGI che ti ho indicato.
Io ti consiglio vivamente di leggerlo: ti farà risparmiare un sacco di tempo :)

Già scaricato (dopo aver letto la tua prima risposta), è davvero una guida ottima, utilissima :)



Sullo "stile"/"convenzioni" con cui si scrive il sorgente (faccenda assolutamente personale, ma conoscere e applicare le convenzioni risulta utile quando si scambia codice con altri programmatori, aiuta a capirsi con minore fatica).

Hai ragione , la prossima volta che scriverò del codice farò il possibile per attenermi alle "convenzioni".

Grazie per l'aiuto che mi hai dato ;);)