codice:
import javax.swing.*;//versione migliorata e potenziata di java.awt
import java.awt.*;//il package java.awt contiene le classi che permettono la creazione di interfacce grafiche
import java.awt.event.*;//il package
public class convertitore extends JFrame implements ActionListener
{
String[] choice={" --Selezionare grandezza fisica--","Pressione","Energia"};//array formato da...
String[] energy={"Elettronvolt (eV)","Joule (J)","Calorie (Cal)"};
String[] pression={"Pascal (Pa)","Millimetri di mercurio (mmHg)","Bar"};
JLabel name;//etichetta
JLabel quantityl;
JComboBox quantityc;//menu di scelta (choice nel package java.awt)
JLabel valuel;
JLabel error;
JTextField valuet;//campo testo
JLabel startl;
JComboBox startc;
JLabel endl;
JComboBox endc;
JButton convert;//pulsante
JLabel resultl;
JTextField resultt;
ComboBoxModel enlists;
ComboBoxModel pressionlists;
ComboBoxModel enliste;
ComboBoxModel pressionliste;
double bartommhg=75.0064;
double mmhgtobar=0.0133;
double mmhgtopa=133.3220;
double patommhg=0.0075;
double bartopa=10000.0;
double patobar=0.0001;
double evtoj=1.6022e-19;
double jtoev=6.2414e18;
double evtoca=3.8265e-20;
double catoev=2.6131e19;
double jtoca=0.2388;
double catoj=4.1868;
JPanel contentPane;
public convertitore() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
init();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]){
convertitore c=new convertitore();
boolean packFrame = false;
if (packFrame) {
c.pack();
}
else {
c.validate();
}
//Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = c.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
c.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
c.setVisible(true);}
public void init()//il metodo init inizializza le variabili prima che l'applet entri in esecuzione
{
contentPane = (JPanel)this.getContentPane();
contentPane.setLayout(null);//permette la collocazione libera degli elementi grafici nell'interfaccia grafica
setSize(600,400);//definisce la dimensione dell'interfaccia grafica
setBackground(Color.gray);
name=new JLabel("Convertitore di unità di misura",JLabel.CENTER);
name.setBounds(200,10,200,20);//definisce la posizione e la dimensione di un oggetto
name.setBackground(Color.white);//definisce il colore dello sfondo
add(name);//aggiunge l'elemento all'interfaccia grafica
quantityl=new JLabel("Grandezza da convertire",JLabel.CENTER);
quantityl.setBounds(200,50,200,20);
quantityl.setBackground(Color.white);
add(quantityl);
quantityc=new JComboBox(choice);
quantityc.setBounds(190,70,220,20);
quantityc.setBackground(Color.white);
quantityc.addActionListener(this);//associa un ascoltatore di eventi all'oggetto
add(quantityc);
valuel=new JLabel("Valore da convertire",JLabel.CENTER);
valuel.setBounds(200,120,200,15);
valuel.setBackground(Color.white);
add(valuel);
valuet=new JTextField();
valuet.setBounds(200,140,200,20);
valuet.setBackground(Color.white);
add(valuet);
startl=new JLabel("Da");
startl.setBounds(30,190,20,20);
add(startl);
startc=new JComboBox();
startc.setBounds(50,190,200,20);
startc.setBackground(Color.white);
add(startc);
endl=new JLabel("A");
endl.setBounds(330,190,20,20);
endl.setBackground(Color.white);
add(endl);
endc=new JComboBox();
endc.setBounds(350,190,200,20);
endc.setBackground(Color.white);
add(endc);
convert=new JButton("Converti");
convert.setBounds(250,240,100,20);
convert.setBackground(new Color (164,187,213));
convert.addActionListener(this);
add(convert);
resultl=new JLabel("Risultato",JLabel.CENTER);
resultl.setBounds(250,290,100,20);
resultl.setBackground(Color.white);
add(resultl);
resultt=new JTextField();
resultt.setBounds(200,310,200,20);
resultt.setBackground(Color.white);
add(resultt);
error=new JLabel("",JLabel.CENTER);
error.setBounds(200,360,200,20);
error.setForeground(Color.red);//definisce il colore del testo
add(error);
enlists=new DefaultComboBoxModel(energy);
enliste=new DefaultComboBoxModel(energy);
pressionlists=new DefaultComboBoxModel(pression);
pressionliste=new DefaultComboBoxModel(pression);
}
public void actionPerformed (ActionEvent e)//metodo per la gestione degli eventi
{
Object source=e.getSource();
int idx=quantityc.getSelectedIndex();//assegna un valore intero all'elemento selzionato nel menu "quantityc"
if(source==quantityc)
{
if(idx==1)
{
startc.setModel(pressionlists);//setModel permette di associare un modello predefinito
endc.setModel(pressionliste);
}
else if(idx==2)
{
startc.setModel(enlists);
endc.setModel(enliste);
}
}
else if (source==convert)
{
String string=valuet.getText().trim();//elimina gli spazi nella stringa contenuta nel campo testo "valuet" e la assegna ad una variabile di tipo string
try
{
double i=Double.valueOf(string).doubleValue();
resultt.setText(String.valueOf(i));
}
catch (NumberFormatException d)//gestione eccezioni; esegue un controllo sul testo inserito nel campo valuet e restituisce un messaggio nel caso in cui non sia un numero
{
error.setText("Inserire valore numerico!!");
}
/*Double i=Double.valueOf(string).doubleValue();
double a=0.0;
if (idx==1)
{
int idxps=startc.getSelectedIndex();
int idxpe=endc.getSelectedIndex();
switch (idxps)
{
case 1:
{
switch(idxpe)
{
case 1:
a=(i);
break;
case 2:
a=(i*patommhg);
break;
case 3:
a=(i*patobar);
break;
}
}
case 2:
{
switch(idxpe)
{
case 1:
a=i*mmhgtopa;
break;
case 2:
a=i;
break;
case 3:
a=i*mmhgtobar;
break;
}
}
case 3:
{
switch(idxpe)
{
case 1:
a=i*bartopa;
break;
case 2:
a=i*bartommhg;
break;
case 3:
a=i;
break;
}
}
}
}*/
}
}
}