salve a tutti,
sto sviluppando un semplice programma in java con interfaccia grafica che risolve potenze ad esponente intero. Per la prima volta ho provato il GridBagLayout, ma ho un problema, perchè quando aggiungo un elemento in una cella quello precedente viene sovrascritto. In pratica visualizzo solo l'elemento grafico. c'è un modo per mettere le cose a posto?
codice:import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Potenza extends JFrame { Label grisultato=new Label("Risultato: "); JButton calcola=new JButton(); JTextField gesponente=new JTextField(); Label eesponente=new Label("Esponente:"); JTextField gbase=new JTextField(); Label ebase=new Label("Base:"); public Potenza() { //Regole per la finestra setTitle("Calcolo di potenze ad esponente intero"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); setSize(350,95); setResizable(false); setLocation(300,200); //Definizione layout GridBagLayout layout=new GridBagLayout(); GridBagConstraints lim=new GridBagConstraints(); //Etichetta base lim.gridx=0; lim.gridy=0; layout.setConstraints(ebase,lim); add(ebase); //Casella di testo per la base lim.gridx=1; lim.gridy=0; layout.setConstraints(gbase,lim); add(gbase); //Etichetta esponente lim.gridx=0; lim.gridy=1; layout.setConstraints(eesponente,lim); add(eesponente); //Casella di testo per l'esponente lim.gridx=1; lim.gridy=1; layout.setConstraints(gesponente,lim); add(gesponente); //Pulsante calcola lim.gridx=0; lim.gridy=2; layout.setConstraints(calcola,lim); add(calcola); //Risultato lim.gridx=1; lim.gridy=2; layout.setConstraints(grisultato,lim); add(grisultato); //Inclusione ascoltatore calcola.addActionListener(new Calcolo()); } public static void main(String[] args) { new Potenza(); } public class Calcolo implements ActionListener { public void actionPerformed(ActionEvent evt) { double base; double risultato; int iter; int esponente; base=Double.parseDouble(gbase.getText()); esponente=Integer.parseInt(gesponente.getText()); risultato=1; for(iter=0;iter<esponente;++iter){ risultato=risultato*base; } String srisultato=Double.toString(risultato); if(srisultato=="Infinity"){srisultato="Valore troppo grande";} grisultato.setText("Risultato: "+srisultato); } } }

Rispondi quotando

