Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

I risultati di questa applicazione sono attendibili ?

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

0
voti

[11] Re: I risultati di questa applicazione sono attendibili ?

Messaggioda Foto Utenteciclotrone » 18 mag 2013, 21:33

ecco il codice sorgente di frame1
Codice: Seleziona tutto
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.AbstractTableModel;

public class frame1 extends JFrame {
    // --- inizio variabili pubbliche ---
   
    // --- fine variabili pubbliche ---
   
   
    //--- inizio costanti ---
    private static byte AltezzaLabel=16;
    private static byte AltezzaTesto=20;
    private static byte AltezzaCheck=24;
    private static byte AltezzaRadio=24;
    private static byte AltezzaCombo=25;
    private static byte AltezzaButton=26;
    private static byte AltezzaProgressBar=28;

    private static boolean debug1=false;
    private static boolean debug2=false;
    private static boolean debug3=false;
       
    private static boolean italiano=true;
    private static boolean EsteticaEsp=false;
    private static boolean VuolePerderePrecisione=true;
    //--- fine costanti ---
   
   
   
    private JPanel pannello1 = new JPanel();
    private JPanel pannello2 = new JPanel();
    private JPanel pannello3 = new JPanel();
    private JPanel pannello4 = new JPanel();   
    private JPanel panCentro = new JPanel();
    private JPanel panSud = new JPanel();
   
    private JLabel[] etic = new JLabel[10];
    private JTextArea[] manoscritti = new JTextArea[1];
   
    private ImageIcon iconEquazione = new ImageIcon();
    private JLabel lEquazione = new JLabel();

    private JRadioButton oProtone = new JRadioButton("nucleo protone   (Z1=1    A1=1)", false);
    private JRadioButton oDeuterio = new JRadioButton("nucleo deuterio   (Z1=1    A1=2)", false);
    private JRadioButton oTrizio = new JRadioButton("nucleo trizio   (Z1=1    A1=3)", false);
    private JRadioButton oElio = new JRadioButton("nucleo elio   (Z1=2    A1=4)", false);
    private JRadioButton oNeon = new JRadioButton("nucleo neon   (Z1=10    A1=20)", false);
    private JRadioButton oArgon = new JRadioButton("nucleo argon   (Z1=18    A1=40)", false);
    private JRadioButton oKripton = new JRadioButton("nucleo kripton   (Z1=36    A1=84)", false);
    private JRadioButton oXeno = new JRadioButton("nucleo xeno   (Z1=54    A1=132)", false);
    private JRadioButton oRadon = new JRadioButton("nucleo radon   (Z1=86    A1=222)", false);
    private ButtonGroup bgroup = new ButtonGroup();

   

    private JTable griglia = new JTable();

    private JCheckBox CheckDebug = new JCheckBox("debug", false);
    private JCheckBox CheckTagliaDecimali = new JCheckBox("mostrare soltanto 2 decimali", true);
    private JCheckBox CheckKiloEv = new JCheckBox("se minore di 1 Mev converte in chilo elettronvolt", true);
    private JButton bCalcola = new JButton("calcola");

    private JLabel lFlussoMagnetico = new JLabel("flusso magnetico (in tesla)", JLabel.RIGHT);
    private JTextField tFlussoMagnetico = new JTextField("1");
    private JButton bRestoreFlussoMagnetico = new JButton("ripristina");

    private JButton bProgetta = new JButton("progetta ciclotrone");

   
    //private JLabel lAggiunta = new JLabel("", JLabel.RIGHT);
    private JTextField tAggiunta = new JTextField("1,04");
    private JButton bRestoreAggiunta = new JButton("ripristina");


   
    private JCheckBox CheckDebugTable1 = new JCheckBox("debug table 1", false);
   
   
   
    //--- inizio variabili condivise non passate ---
    private int w9_griglia=0;
    private int h9_griglia=0;
    private int x9_griglia=0;
    private int y9_griglia=0;
    private int NumRighe=0;
    private int NumColonne=0;
   
    private String testata[] = {
        "Z2",
        "target",
        "simbolo",
        "A2"
    };
    //--- fine variabili condivise non passate ---
   
   
    //--- inizio condivisione di vecchie variabili passate ---
   
    //--- fine condivisione di vecchie variabili passate ---
   
       
    //--- inizio dichiarare le variabili condivise ---
    //private int w9=0; // non utilizzato
    //private int h9=0; // non utilizzato
    //private int x9=0; // non utilizzato
    //private int y9=0; // non utilizzato
    private String AppName="";
    private float versione=0.0f;
    private String Website="";
    private String titolo="";
    private int width_disponibile=0;
    private int height_disponibile=0;
    private int x1_disponibile=0;
    private int y1_disponibile=0;
    private Object[][] oggetti = new Object[1][1];
    //--- fine dichiarare le variabili condivise ---

    public frame1(final int OldW9, final int OldH9, final int OldX9,
        final int OldY9, final String OldAppName,
        final float OldVersione, final String OldWebsite,
        final String OldTitolo, final int OldWidth_disponibile,
        final int OldHeight_disponibile, final int OldX1_disponibile,
        final int OldY1_disponibile, final int OldLarghezza,
        final int OldAltezza, final int OldX1, final int OldY1,
        Object OldOggetti[][]) {

        //--- inizio impostare le variabili condivise ---
        //w9=OldW9; // non utilizzato
        //h9=OldH9; // non utilizzato
        //x9=OldX9; // non utilizzato
        //y9=OldY9; // non utilizzato
        AppName=OldAppName;
        versione=OldVersione;
        Website=OldWebsite;
        titolo=OldTitolo;
        width_disponibile=OldWidth_disponibile;
        height_disponibile=OldHeight_disponibile;
        x1_disponibile=OldX1_disponibile;
        y1_disponibile=OldY1_disponibile;
       
        NumRighe=OldOggetti.length;
        NumColonne=OldOggetti[0].length;
       
        oggetti = new Object[NumRighe][NumColonne];
        for (int bb=0;bb<NumRighe;bb++) {
            for (int cc=0;cc<NumColonne;cc++) {
                oggetti[bb][cc]=OldOggetti[bb][cc];
            }
        }
        //--- fine impostare le variabili condivise ---
       
       
       

        //--- inizio dichiarazioni interne ---
        java.awt.Font default_font = this.getFont();
        java.awt.Font default_font_bold = new Font("Default", java.awt.Font.BOLD, 12);
        java.awt.Font default_NO_bold = new Font("Default", java.awt.Font.PLAIN, 12);

        Border antebordo = BorderFactory.createEtchedBorder();
        //--- fine dichiarazioni interne ---

       
       
        //--- inizio impostare le controls ---
        for (byte bb=0;bb<etic.length;bb++) {
            etic[bb] = new JLabel("          ");
            //etic[bb] = new JLabel(" etic"+bb+" ");
        }

        iconEquazione=IfTheFileJarExists_ItIsNotNecessaryImagesFolder(OldW9, OldH9, OldX9, OldY9,
            OldWidth_disponibile, OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile,
            "images", "barriera.png", "");
           
        lEquazione.setIcon(iconEquazione);       
        lFlussoMagnetico.setFont(default_NO_bold);
        manoscritti[0] = new JTextArea("Allo scopo di aumentare la sezione \nd'urto, aggiungere (Mev)");

        JFrame mioframe = new JFrame();
        Color ColoreDelloSfondo = mioframe.getBackground();
        //int rosso = ColoreSfondo.getRed();
        //int verde = ColoreSfondo.getGreen();
        //int blu = ColoreSfondo.getBlue();

        manoscritti[0].setBackground(ColoreDelloSfondo);
        manoscritti[0].setEditable(false);


        //--- inizio test ---
        //String messaggio= "NumRighe = "+Integer.toString(NumRighe)+" \n";
        //messaggio=messaggio+"NumColonne = "+Integer.toString(NumColonne)+" \n";
        //new ViewerMessages(OldW9, OldH9, OldX9, OldY9, OldTitolo, OldWidth_disponibile,
        //    OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile, messaggio);
        //--- fine test ---


        bgroup.add(oProtone);
        bgroup.add(oDeuterio);
        bgroup.add(oTrizio);
        bgroup.add(oElio);
        bgroup.add(oNeon);
        bgroup.add(oArgon);
        bgroup.add(oKripton);
        bgroup.add(oXeno);
        bgroup.add(oRadon);
        oElio.setSelected(true);
       
        tFlussoMagnetico.setPreferredSize(new Dimension(70, AltezzaTesto));
        //--- fine impostare le controls ---




        //--- inizio eventi ---
        bCalcola.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //JDialog UnDialog_di_ev = new JDialog();
                //int w9_cal=frame1.this.getWidth();
                //int h9_cal=frame1.this.getHeight();
                //UnDialog_di_ev.setSize(w9_cal, h9_cal);
                                   
                //int x9_cal=frame1.this.getX();
                //int y9_cal=frame1.this.getY();
                //UnDialog_di_ev.setLocation(x9_cal, y9_cal);
               
                JDialog UnDialog_di_ev = new JDialog();
                UnDialog_di_ev.setUndecorated(true);
                UnDialog_di_ev.setSize(2, 2);
                int x9_cal=frame1.this.getX()+(frame1.this.getWidth()/2)-1;
                int y9_cal=frame1.this.getY()+(frame1.this.getHeight()/2)-1;
                UnDialog_di_ev.setLocation(x9_cal, y9_cal);
               
                chiamataCalcola(2, 2, x9_cal, y9_cal, bCalcola.getText(),
                    OldWidth_disponibile, OldHeight_disponibile,
                    OldX1_disponibile, OldY1_disponibile);
            }
        });



        bRestoreFlussoMagnetico.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                tFlussoMagnetico.setText("1");
            }
        });


        bRestoreAggiunta.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                tAggiunta.setText("1,04");
            }
        });


        bProgetta.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //JDialog UnDialog_di_ev = new JDialog();
                //int w9_pro=frame1.this.getWidth();
                //int h9_pro=frame1.this.getHeight();
                //UnDialog_di_ev.setSize(w9_pro, h9_pro);
                                   
                //int x9_pro=frame1.this.getX();
                //int y9_pro=frame1.this.getY();
                //UnDialog_di_ev.setLocation(x9_pro, y9_pro);
               
                JDialog UnDialog_di_ev = new JDialog();
                UnDialog_di_ev.setUndecorated(true);
                UnDialog_di_ev.setSize(2, 2);
                int x9_pro=frame1.this.getX()+(frame1.this.getWidth()/2)-1;
                int y9_pro=frame1.this.getY()+(frame1.this.getHeight()/2)-1;
                UnDialog_di_ev.setLocation(x9_pro, y9_pro);

                chiamataProgetta(2, 2, x9_pro, y9_pro, OldAppName, OldVersione,
                    OldWebsite, bProgetta.getText(), OldWidth_disponibile,
                    OldHeight_disponibile, OldX1_disponibile,
                    OldY1_disponibile);
               
            }
        });
        //--- fine eventi ---


        //--- begin pannello1 ---
        pannello1.setLayout(new BoxLayout(pannello1, BoxLayout.Y_AXIS));
        pannello1.add(oProtone);
        pannello1.add(oDeuterio);
        pannello1.add(oTrizio);
        pannello1.add(oElio);
        pannello1.add(oNeon);
        pannello1.add(oArgon);
        pannello1.add(oKripton);
        pannello1.add(oXeno);
        pannello1.add(oRadon);
        Border bordoPan1 = BorderFactory.createTitledBorder(antebordo, "seleziona proiettile", 0, 0, default_font, Color.black);
        pannello1.setBorder(bordoPan1);
        JScrollPane barre1= new JScrollPane(pannello1);
        barre1.setPreferredSize(new Dimension(290, 150));
        //--- end pannello1 ---





        //--- inizio pannello2 ---
        w9_griglia=OldW9;
        h9_griglia=OldH9;
        x9_griglia=OldX9;
        y9_griglia=OldY9;
        griglia=new JTable(new MyTableModel());
        griglia.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

        griglia.getColumnModel().getColumn(0).setPreferredWidth(20); //Z2
        griglia.getColumnModel().getColumn(1).setPreferredWidth(100); //target
        griglia.getColumnModel().getColumn(2).setPreferredWidth(50); //simbolo
        griglia.getColumnModel().getColumn(3).setPreferredWidth(30); //A2

        pannello2.setLayout(new BorderLayout());
        pannello2.add(griglia.getTableHeader(), BorderLayout.PAGE_START);
        pannello2.add(griglia);

        JScrollPane barre2 = new JScrollPane(pannello2);
        barre2.setPreferredSize(new Dimension(290, 150));

        griglia.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        griglia.setRowSelectionInterval(5,5);
        //--- fine pannello2 ---





        //--- begin pannello3 ---
        pannello3.setLayout(new BoxLayout(pannello3, BoxLayout.Y_AXIS));
        pannello3.add(CheckTagliaDecimali);
        pannello3.add(CheckKiloEv);
        //pannello3.add(CheckDebug);
        pannello3.add(bCalcola);
        Border bordoPan3 = BorderFactory.createTitledBorder(antebordo, "calcola energia finale", 0, 0, default_font, Color.black);
        pannello3.setBorder(bordoPan3);
        //--- end pannello3 ---




        //--- inizio pannello4 ---
        pannello4.setLayout(new GridBagLayout());
        GridBagConstraints c4 = new GridBagConstraints();
        c4.fill = GridBagConstraints.HORIZONTAL;
        //Insets(up,left,bottom,right);
        c4.insets = new Insets(3,3,3,3);

        c4.gridy = 0;
        c4.gridx = 0; pannello4.add(lFlussoMagnetico, c4);
        c4.gridx = 1; pannello4.add(tFlussoMagnetico, c4);
        c4.gridx = 2; pannello4.add(bRestoreFlussoMagnetico, c4);

        c4.gridy = 1;
        c4.gridx = 0; pannello4.add(manoscritti[0], c4);
        c4.gridx = 1; pannello4.add(tAggiunta, c4);
        c4.gridx = 2; pannello4.add(bRestoreAggiunta, c4);

        Border bordoPan4 = BorderFactory.createTitledBorder(antebordo, "", 0, 0, default_font, Color.black);
        pannello4.setBorder(bordoPan4);
        //--- fine pannello4 ---





        //--- inizio panCentro ---
        panCentro.setLayout(new GridBagLayout());
        GridBagConstraints c99 = new GridBagConstraints();
        c99.fill = GridBagConstraints.VERTICAL;
        //Insets(up,left,bottom,right);
        c99.insets = new Insets(0,0,10,0);

        int coy=-1;

        c99.anchor = GridBagConstraints.CENTER;
        coy++;c99.gridy = coy;c99.gridwidth = 2;
        c99.gridx = 0; panCentro.add(lEquazione, c99);
        //c99.gridx = 1; panCentro.add(etic[1], c99);

        c99.anchor = GridBagConstraints.LINE_START;
        coy++; c99.gridy = coy;c99.gridwidth = 1;
        c99.gridx = 0; panCentro.add(barre1, c99); //scelta tipo di proiettile
        c99.gridx = 1; panCentro.add(barre2, c99); //scelta del target


        coy++; c99.gridy = coy;c99.gridwidth = 2;
        c99.gridx = 0; panCentro.add(pannello3, c99); //bottone calcola
        //c99.gridx = 1; panCentro.add(etic[2], c99);



        coy++; c99.gridy = coy;c99.gridwidth = 2;
        c99.gridx = 0; panCentro.add(pannello4, c99); //progetta acceleratore
        JScrollPane barreCentro= new JScrollPane(panCentro);
        //--- fine panCentro ---



        //--- inizio panSud ---
        panSud.setLayout(new GridBagLayout());
        GridBagConstraints cSud = new GridBagConstraints();
        cSud.fill = GridBagConstraints.HORIZONTAL;
        //Insets(up,left,bottom,right);
        cSud.insets = new Insets(3,10,3,10);
        cSud.gridy = 0;
        cSud.gridx = 0; panSud.add(bProgetta, cSud);
        JScrollPane barreSud= new JScrollPane(panSud, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        //--- fine panSud ---

       
       
        this.getContentPane().setLayout(new BorderLayout());
        this.getContentPane().add(BorderLayout.CENTER, barreCentro);
        this.getContentPane().add(BorderLayout.SOUTH, barreSud);
        this.pack();

        double w2=OldWidth_disponibile*0.9d; int w3=(int)w2;
        double h2=OldHeight_disponibile*0.9d; int h3=(int)h2;

        //--- inizio setSize ---
        //String messaggio="w2 = "+Double.toString(w2)+" \n";
        //messaggio=messaggio+"h2 = "+Double.toString(h2)+" \n";
        //messaggio=messaggio+"w3 = "+Integer.toString(w3)+" \n";
        //messaggio=messaggio+"h3 = "+Integer.toString(h3)+" \n";
        //new ViewerMessages(OldW9, OldH9, OldX9, OldY9, "test dimensioni schermo",
        //    OldWidth_disponibile, OldHeight_disponibile, OldX1_disponibile,
        //    OldY1_disponibile, messaggio);
       
       
        if (OldLarghezza > OldWidth_disponibile) {
            if (OldAltezza > OldHeight_disponibile) {
                this.setSize(w3, h3);
            }else{
                this.setSize(w3, OldAltezza);
            }
        }else{
            if (OldAltezza > OldHeight_disponibile) {
                this.setSize(OldLarghezza, h3);
            }else{
                this.setSize(OldLarghezza, OldAltezza);
            }
        }
        //--- fine setSize ---

       

       
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
       
        if (OldX1 < 0) {
            this.setLocationRelativeTo(null);
        }else{
            if (OldY1 < 0) {
                this.setLocationRelativeTo(null);
            }else{
                this.setLocation(OldX1, OldY1);
            }
        }
       
        this.setTitle(OldTitolo);
        //this.setModal(true);
        //bButton1.doClick();
        this.setVisible(true);
    }





    class MyTableModel extends AbstractTableModel {
        public int getColumnCount() {
            return NumColonne;
        }

        public int getRowCount() {
            return oggetti.length;
        }

        public String getColumnName(int col) {
            return testata[col];
        }

        public Object getValueAt(int row, int col) {
            return oggetti[row][col];
        }

        //JTable uses this method to determine the default renderer/
        //editor for each cell.  If we didn't implement this method,
        //then the last column would contain text ("true"/"false"),
        //rather than a check box.
        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }

        // Don't need to implement this method unless your table's
        // editable.
        public boolean isCellEditable(int row, int col) {
            //Note that the data/cell address is constant,
            //no matter where the cell appears onscreen.
            //if (col < 2) {
                return false;
            //} else {
                //return true;
            //}
        }

        // Don't need to implement this method unless your table's
        // data can change.
        public void setValueAt(Object value, int row, int col) {
            boolean sw1=CheckDebugTable1.isSelected();
            String messaggio="";
            if (sw1) {
                messaggio="Setting value at " + row + ",";
                messaggio=messaggio+col+ " to " + value;
                messaggio=messaggio+" (an instance of "+ value.getClass() + ") \n";
                new ViewerMessages(w9_griglia, h9_griglia, x9_griglia, y9_griglia,
                    "extends AbstractTableModel", width_disponibile, height_disponibile,
                    x1_disponibile, y1_disponibile, messaggio);
            }

            oggetti[row][col] = value;
            fireTableCellUpdated(row, col);

            if (sw1) {
                printDebugData();
            }
        }

        private void printDebugData() {
            int numRows = getRowCount();
            int numCols = getColumnCount();
            String messaggio="New value of data: \n";

            for (int bb=0;bb<numRows;bb++) {
                messaggio=messaggio+"row "+bb+":";

                for (int cc=0;cc<numCols;cc++) {
                    messaggio=messaggio+""+oggetti[bb][cc]+" \n";
                }
                messaggio=messaggio+" \n";
            }
            byte b1=26;
            messaggio=messaggio+module99.str_repeat(b1, ((char)45))+" \n";
            new ViewerMessages(w9_griglia, h9_griglia, x9_griglia, y9_griglia,
                "extends AbstractTableModel", width_disponibile, height_disponibile,
                x1_disponibile, y1_disponibile, messaggio);
           
        }
    }





    private javax.swing.ImageIcon IfTheFileJarExists_ItIsNotNecessaryImagesFolder(
        final int OldW9, final int OldH9, final int OldX9, final int OldY9,
        final int OldWidth_disponibile, final int OldHeight_disponibile,
        final int OldX1_disponibile, final int OldY1_disponibile,
        final String Sentiero, final String NomeFile, final String descrizione) {

        javax.swing.ImageIcon UnaIcona = new javax.swing.ImageIcon();

        String SentieroNomeFile=Sentiero+"/"+NomeFile;
        java.net.URL imgURL = getClass().getResource(SentieroNomeFile);
        if (imgURL != null) {
            //new msgbox(""+imgURL);
            UnaIcona = new javax.swing.ImageIcon(imgURL, descrizione);
        } else {
            String messaggio="Errore \u0021 \n";
            messaggio=messaggio+"Non \u00e8 stato possibile trovare il file: ";
            messaggio=messaggio+NomeFile+" \n";
            new ViewerMessages(OldW9, OldH9, OldX9, OldY9, NomeFile, OldWidth_disponibile,
                OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile, messaggio);

        }

        return UnaIcona;
    }


   
    private void chiamataCalcola(final int OldW9, final int OldH9, final int OldX9,
        final int OldY9, final String CaptionBottone, final int OldWidth_disponibile,
        final int OldHeight_disponibile, final int OldX1_disponibile,
        final int OldY1_disponibile) {
           
        double EnergiaLocaleMev=0;
        String AlfaEnergiaLocale="";
        String kk1="";
        String kk2="";
        double d1=0;
        String messaggio="";



        int RigaSelezionata = griglia.getSelectedRow();

        energianecessaria energianecessaria = new energianecessaria(OldW9, OldH9, OldX9,
            OldY9, CaptionBottone, OldWidth_disponibile, OldHeight_disponibile, OldX1_disponibile,
            OldY1_disponibile, RigaSelezionata, oggetti, oProtone, oDeuterio, oTrizio, oElio, oNeon,
            oArgon, oKripton, oXeno, oRadon, CheckDebug);
           
        EnergiaLocaleMev=energianecessaria.getEnergiaFinaleMev();


        if (CheckKiloEv.isSelected()) {
            if (EnergiaLocaleMev < 1) {
                d1=EnergiaLocaleMev*1000;
                if (CheckTagliaDecimali.isSelected()) {
                    AlfaEnergiaLocale=module99.MyFormat(d1, (byte)2, false, italiano, EsteticaEsp);
                    messaggio="energia = "+AlfaEnergiaLocale+" chiloelettronvolt";
                }else{
                    AlfaEnergiaLocale=Double.toString(d1);
                    messaggio="energia = "+AlfaEnergiaLocale+" chiloelettronvolt";
                }
            }else{
                if (CheckTagliaDecimali.isSelected()) {
                    AlfaEnergiaLocale=module99.MyFormat(EnergiaLocaleMev, (byte)2, false, italiano, EsteticaEsp);
                    messaggio="energia = "+AlfaEnergiaLocale+" Mev";
                }else{
                    AlfaEnergiaLocale=Double.toString(EnergiaLocaleMev);
                    messaggio="energia = "+AlfaEnergiaLocale+" Mev";
                }
            }
        }else{
            if (CheckTagliaDecimali.isSelected()) {
                AlfaEnergiaLocale=module99.MyFormat(EnergiaLocaleMev, (byte)2, false, italiano, EsteticaEsp);
                messaggio="energia = "+AlfaEnergiaLocale+" Mev";
            }else{
                AlfaEnergiaLocale=Double.toString(EnergiaLocaleMev);
                messaggio="energia = "+AlfaEnergiaLocale+" Mev";
            }
        }
       
        new ViewerMessages(OldW9, OldH9, OldX9, OldY9, CaptionBottone, OldWidth_disponibile,
            OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile, messaggio);
    }



    private void chiamataProgetta(final int OldW9, final int OldH9, final int OldX9,
        final int OldY9, final String OldAppName, final float OldVersione,
        final String OldWebsite, final String CaptionBottone,
        final int OldWidth_disponibile, final int OldHeight_disponibile,
        final int OldX1_disponibile, final int OldY1_disponibile) {
           
        String kk1="";
        String kk2="";
        boolean swErroreInterno=false;
        boolean sw1=false;
        double FlussoMagnetico=0;
        double SpazioVuoto=0;
        double aggiunta=0;

        String NomeProiettile="";
        int NumeroAtomico=0;
        double MassaRiposo=0;
        double EnergiaFinaleMev=0;
        byte TipoDouble=0;
        byte TipoFloat=1;
        byte TipoLong=2;
        byte TipoInt=3;
        byte TipoShort=4;
        byte TipoByte=5;

        try {
            int RigaSelezionata = griglia.getSelectedRow();
            energianecessaria energianecessaria = new energianecessaria(OldW9, OldH9, OldX9,
                OldY9, CaptionBottone, OldWidth_disponibile, OldHeight_disponibile, OldX1_disponibile,
                OldY1_disponibile, RigaSelezionata, oggetti, oProtone, oDeuterio, oTrizio, oElio, oNeon,
                oArgon, oKripton, oXeno, oRadon, CheckDebug);

            NomeProiettile=energianecessaria.getNomeProiettile();
            NumeroAtomico=energianecessaria.getNumeroAtomico();
            MassaRiposo=energianecessaria.getMassaRiposo();
            EnergiaFinaleMev=energianecessaria.getEnergiaFinaleMev();

            if (VuolePerderePrecisione) {
                //--- inizio vuole perdere precisione ---
                kk1=module99.MyFormat(EnergiaFinaleMev, (byte)2, false, italiano, EsteticaEsp);
                kk2=module99.ReplaceCommaWithPoint(kk1,true);
                EnergiaFinaleMev=Double.parseDouble(kk2);
                //--- inizio vuole perdere precisione ---
            }

            //--- inizio FlussoMagnetico in tesla ---
            FromTextField verifica = new FromTextField(tFlussoMagnetico, lFlussoMagnetico.getText(), TipoDouble, false, false);
            swErroreInterno=verifica.getSwErr();
            if (swErroreInterno) {
                new ViewerMessages(OldW9, OldH9, OldX9, OldY9, "ERRORE", OldWidth_disponibile,
                    OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile, verifica.getSegnaleErr());
            }else{
                FlussoMagnetico=verifica.getD1();
            }
            //--- fine FlussoMagnetico in tesla ---


            if (swErroreInterno == false) {
                //--- inizio aggiunta  ---
                verifica = new FromTextField(tAggiunta, manoscritti[0].getText(), TipoDouble, false, false);
                swErroreInterno=verifica.getSwErr();
                if (swErroreInterno) {
                    new ViewerMessages(OldW9, OldH9, OldX9, OldY9, "ERRORE", OldWidth_disponibile,
                        OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile, verifica.getSegnaleErr());
                }else{
                    aggiunta=verifica.getD1();
                }
                //--- fine aggiunta  ---
            }

            if (swErroreInterno == false) {
                String Target=(String) oggetti[RigaSelezionata][1];
                EnergiaFinaleMev=EnergiaFinaleMev+aggiunta;

                int larghezza_ciclo=600;
                int altezza_ciclo=1200;
                int x1_ciclo=(OldW9-larghezza_ciclo)/2;
                x1_ciclo=x1_ciclo+OldX9;

                int y1_ciclo=(OldH9-altezza_ciclo)/2;
                y1_ciclo=y1_ciclo+OldY9;
                   
                AggiustaCoordinate NuoveCoordinate = new AggiustaCoordinate(OldWidth_disponibile,
                    OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile, larghezza_ciclo,
                    altezza_ciclo, x1_ciclo, y1_ciclo);
       
                x1_ciclo=NuoveCoordinate.getX();
                y1_ciclo=NuoveCoordinate.getY();
                larghezza_ciclo=NuoveCoordinate.getWidth();
                altezza_ciclo=NuoveCoordinate.getHeight();
               
                new ciclotrone(OldW9, OldH9, OldX9, OldY9, OldAppName, OldVersione,
                    OldWebsite, CaptionBottone, OldWidth_disponibile, OldHeight_disponibile,
                    OldX1_disponibile, OldY1_disponibile, larghezza_ciclo, altezza_ciclo,
                    x1_ciclo, y1_ciclo, NomeProiettile, Target, NumeroAtomico,
                    MassaRiposo, EnergiaFinaleMev, FlussoMagnetico);
               
            }
        } // end try
        catch(Exception eer) {
            String messaggio="errore in "+((char)34)+CaptionBottone+((char)34)+" \n \n";
            messaggio=messaggio+eer.toString()+" \n";
            new ViewerMessages(OldW9, OldH9, OldX9, OldY9, "ERRORE", OldWidth_disponibile,
                OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile, messaggio);
        } //end catch

    }

}



e questo è il codice sorgente di energianecessaria
Codice: Seleziona tutto
import javax.swing.*;

public class energianecessaria {
    private String NomeProiettile="";
    private int NumeroAtomico=0;
    private double MassaRiposo=0.0d;
    private double EnergiaFinaleMev=0.0d;

    public energianecessaria (final int OldW9, final int OldH9, final int OldX9,
        final int OldY9, final String OldTitolo, final int OldWidth_disponibile,
        final int OldHeight_disponibile, final int OldX1_disponibile,
        final int OldY1_disponibile, final int RigaSelezionata,
        Object[][] MatriceAlfa, JRadioButton oProtone, JRadioButton oDeuterio,
        JRadioButton oTrizio, JRadioButton oElio, JRadioButton oNeon,
        JRadioButton oArgon, JRadioButton oKripton, JRadioButton oXeno,
        JRadioButton oRadon, JCheckBox CheckDebug) {
           
        int A1=0;
        int Z2=0;
        int A2=0;
        String kk1="";
        String messaggio="";

        if (RigaSelezionata == -1){
            messaggio="Devi prima selezionare un target";
            new ViewerMessages(OldW9, OldH9, OldX9, OldY9, OldTitolo, OldWidth_disponibile,
                OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile, messaggio);
        }else{

            boolean sw1=false;
            boolean sw2=false;

            sw1=oProtone.isSelected();
            if (sw1 == true) {
                sw2=true;
                NomeProiettile="protone";
                NumeroAtomico=1;
                MassaRiposo=1.6726231*Math.pow(10,-27);               
                A1=1;
            }

            sw1=oDeuterio.isSelected();
            if (sw1 == true) {
                sw2=true;
                NomeProiettile="deuterio";
                NumeroAtomico=1;
                MassaRiposo=3.343586*Math.pow(10,-27);
                A1=2;
            }

            sw1=oTrizio.isSelected();
            if (sw1 == true) {
                sw2=true;
                NomeProiettile="trizio";
                NumeroAtomico=1;
                MassaRiposo=5.008*Math.pow(10,-27);
                A1=3;
            }

            sw1=oElio.isSelected();
            if (sw1 == true) {
                sw2=true;
                NomeProiettile="elio";
                NumeroAtomico=2;
                MassaRiposo=6.64*Math.pow(10,-27);
                A1=4;
            }

            sw1=oNeon.isSelected();
            if (sw1 == true) {
                sw2=true;
                NomeProiettile="neon";
                NumeroAtomico=10;
                MassaRiposo=3.34*Math.pow(10,-26);
                A1=20;
            }

            sw1=oArgon.isSelected();
            if (sw1 == true) {
                sw2=true;
                NomeProiettile="argon";
                NumeroAtomico=18;
                MassaRiposo=6.63*Math.pow(10,-26);
                A1=40;
            }

            sw1=oKripton.isSelected();
            if (sw1 == true) {
                sw2=true;
                NomeProiettile="kripton";
                NumeroAtomico=36;
                MassaRiposo=1.39*Math.pow(10,-25);
                A1=84;
            }

            sw1=oXeno.isSelected();
            if (sw1 == true) {
                sw2=true;
                NomeProiettile="xeno";
                NumeroAtomico=54;
                MassaRiposo=2.18*Math.pow(10,-25);
                A1=132;
            }

            sw1=oRadon.isSelected();
            if (sw1 == true) {
                sw2=true;
                NomeProiettile="radon";
                NumeroAtomico=86;
                MassaRiposo=3.68*Math.pow(10,-25);
                A1=222;
            }


            if (sw2 == false) {
                messaggio="Devi prima selezionare un tipo di proiettile";
                new ViewerMessages(OldW9, OldH9, OldX9, OldY9, OldTitolo, OldWidth_disponibile,
                    OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile, messaggio);
            }else{
                kk1=""+MatriceAlfa[RigaSelezionata][0]; //Object int is not int
                Z2=Integer.parseInt(kk1);
               
                kk1=""+MatriceAlfa[RigaSelezionata][3]; //Object int is not int
                A2=Integer.parseInt(kk1);

                double d1=Math.pow(A1, (double)1/3);
                double d2=Math.pow(A2, (double)1/3);

                double somma=d1+d2;

                sw1=CheckDebug.isSelected();
                if (sw1 == true) {
                    //--- inizio DEBUG ---
                    messaggio="come proiettile hai selezionato \n";
                    messaggio=messaggio+NomeProiettile+" \n";
                    messaggio=messaggio+"NumeroAtomico = "+NumeroAtomico+" \n";
                    messaggio=messaggio+"A1 = "+A1+" \n \n \n";
                    messaggio=messaggio+"come target hai selezionato \n";
                    messaggio=messaggio+MatriceAlfa[RigaSelezionata][1]+" \n";
                    messaggio=messaggio+"simbolo = "+MatriceAlfa[RigaSelezionata][2]+" \n";
                    messaggio=messaggio+"Z2 = "+Z2+" \n";
                    messaggio=messaggio+"A2 = "+A2+" \n \n \n";
                    messaggio=messaggio+"d1=Math.pow(A1,1/3)   d1 = "+d1+" \n";
                    messaggio=messaggio+"d2=Math.pow(A2,1/3)   d2 = "+d2+" \n";
                    messaggio=messaggio+"somma=d1+d2   somma = "+somma+" \n";
                    new ViewerMessages(OldW9, OldH9, OldX9, OldY9, OldTitolo, OldWidth_disponibile,
                        OldHeight_disponibile, OldX1_disponibile, OldY1_disponibile, messaggio);
                    //--- fine DEBUG ---
                }

                EnergiaFinaleMev=(0.9*NumeroAtomico*Z2)/somma;

            }
        }
    }
   
   
   
    public String getNomeProiettile() {
        return NomeProiettile;
    }
   
   
    public int getNumeroAtomico() {
        return NumeroAtomico;
    }
   
   
    public double getMassaRiposo() {
        return MassaRiposo;
    }
   
   
    public double getEnergiaFinaleMev() {
        return EnergiaFinaleMev;
    }
   
   
   
}



e questo è il codice sorgente di ViewerMessages
Codice: Seleziona tutto
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ViewerMessages extends JDialog {
    private JPanel panSud = new JPanel();
    private JTextArea lMessaggio = new JTextArea("");
    private JLabel etichetta = new JLabel("");
    private JButton bOk = new JButton("OK");

    public ViewerMessages(final int OldW9, final int OldH9, final int OldX9,
        final int OldY9, final String OldTitolo, final int OldWidth_disponibile,
        final int OldHeight_disponibile, final int OldX1_disponibile,
        final int OldY1_disponibile, final String OldMsg) {


        //--- inizio dichiarazioni interne ---
        java.awt.Font default_font_bold = new Font("Default", java.awt.Font.BOLD, 12);
        //--- fine dichiarazioni interne ---


        //--- inizio impostare le controls ---
        JScrollPane barreCentro;
        boolean MessCorto=getMessCorto(OldMsg);
        if (MessCorto) {
            etichetta.setText(OldMsg);
            barreCentro = new JScrollPane(etichetta);
        }else{
            lMessaggio.setText(OldMsg);
            lMessaggio.setEditable(false);
            JFrame mioframe = new JFrame();
            Color ColoreSfondo = mioframe.getBackground();
            lMessaggio.setBackground(ColoreSfondo);
            lMessaggio.setFont(default_font_bold);
            barreCentro = new JScrollPane(lMessaggio);
        }
        //--- fine impostare le controls ---



        //--- inizio eventi ---
        bOk.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                dispose();
            }
        });
        //--- fine eventi ---



        //--- inizio panSud ---
        panSud.setLayout(new GridBagLayout());
        GridBagConstraints cSud = new GridBagConstraints();
        cSud.fill = GridBagConstraints.VERTICAL;
        cSud.anchor = GridBagConstraints.CENTER;
        //Insets(up,left,bottom,right);

        cSud.insets = new Insets(5,0,5,0);
        cSud.gridx = 0;

        byte coy=-1;
        if (MessCorto) {
            coy++; cSud.gridy=coy; panSud.add(etichetta, cSud);
        }
        coy++; cSud.gridy=coy; panSud.add(bOk, cSud);
        //--- fine panSud ---



        this.getContentPane().setLayout(new BorderLayout());
        if (MessCorto == false) {
            this.getContentPane().add(BorderLayout.CENTER, barreCentro);
        }
        this.getContentPane().add(BorderLayout.SOUTH, panSud);
        this.pack();


        int larghezza=this.getWidth()+50;
        int altezza=10;
        if (MessCorto) {
            altezza=this.getHeight();
        }else{
            altezza=this.getHeight()+50;
        }
        this.setSize(larghezza, altezza);

        int x1=OldX9+(OldW9-larghezza)/2;
        int y1=OldY9+(OldH9-altezza)/2;

        if (x1 < OldX1_disponibile) {
            x1=OldX1_disponibile;
        }
        if (y1 < OldY1_disponibile) {
            y1=OldY1_disponibile;
        }

        int x2=x1+larghezza;
        int y2=y1+altezza;
        int x2_disponibile=OldX1_disponibile+OldWidth_disponibile;
        int y2_disponibile=OldY1_disponibile+OldHeight_disponibile;

        if (x2 > x2_disponibile) {
            int x1_temp=x2_disponibile-larghezza;
            if (x1_temp < 0) {
                larghezza=OldWidth_disponibile;
                x1=OldX1_disponibile;
            }else{
                x1=x1_temp;
            }
            this.setSize(larghezza, altezza);
        }
        if (y2 > y2_disponibile) {
            int y1_temp=y2_disponibile-altezza;
            if (y1_temp < 0) {
                altezza=OldHeight_disponibile;
                y1=OldY1_disponibile;
            }else{
                y1=y1_temp;
            }
            this.setSize(larghezza, altezza);
        }

        //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

        this.setLocation(x1, y1);

        this.setTitle(OldTitolo);
        this.setModal(true);
        //bButton1.doClick();
        this.setVisible(true);
    }

    private static boolean getMessCorto(final String messaggio) {
        boolean sw1=false;
        int n1=messaggio.length();
        int n2=messaggio.indexOf("\n");

        if (n1 < 30) {
            if (n2 < 0) {
                sw1=true;
            }else{
                int n3=n2+2;
                if (n3 > n1) {
                    sw1=true;
                }
            }
        }

        return sw1;
    }

}



Quindi adesso potete stare tranquilli perché potete compilare il codice sogente e mandarlo in esecuzione. :D
Avatar utente
Foto Utenteciclotrone
-2 2
 
Messaggi: 15
Iscritto il: 17 mag 2013, 21:56

1
voti

[12] Re: I risultati di questa applicazione sono attendibili ?

Messaggioda Foto UtenteDirtyDeeds » 18 mag 2013, 21:45

No, non sono attendibili...
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

0
voti

[13] Re: I risultati di questa applicazione sono attendibili ?

Messaggioda Foto Utenteciclotrone » 18 mag 2013, 21:49

Perché ?

Comunque prima qualcuno mi aveva chiesto a cosa serve.
Serve per progettare velocemente i ciclotroni, tutto qui, niente di trascendentale.
Avatar utente
Foto Utenteciclotrone
-2 2
 
Messaggi: 15
Iscritto il: 17 mag 2013, 21:56

2
voti

[14] Re: I risultati di questa applicazione sono attendibili ?

Messaggioda Foto UtenteDirtyDeeds » 18 mag 2013, 21:52

ciclotrone ha scritto:Serve per progettare velocemente i ciclotroni, tutto qui, niente di trascendentale.


Niente di trascendentale, come no (:OOO:) Quanti ciclotroni hai progettato in vita tua? :mrgreen:
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

1
voti

[15] Re: I risultati di questa applicazione sono attendibili ?

Messaggioda Foto Utenteciclotrone » 18 mag 2013, 22:15

Uno soltanto!
Ma siccome la progettazione di un ciclotrone richiede tempo e impegno e siccome non sono un masochista, prima di progettarlo mi sono creato una applicazione cui scopo è sveltire di molto le procedure di calcolo.
Avatar utente
Foto Utenteciclotrone
-2 2
 
Messaggi: 15
Iscritto il: 17 mag 2013, 21:56

2
voti

[16] Re: I risultati di questa applicazione sono attendibili ?

Messaggioda Foto UtentePietroBaima » 18 mag 2013, 22:19

Wow!
Interessante! Quanto vale la frequenza di moto ciclotronico che hai ottenuto rispetto alle dimensioni dell'aggeggio?

Grazie
Ciao,
Pietro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

2
voti

[17] Re: I risultati di questa applicazione sono attendibili ?

Messaggioda Foto UtenteDirtyDeeds » 18 mag 2013, 22:40

ciclotrone ha scritto:Uno soltanto!


Quanto ti viene il vuoto necessario per il funzionamento?
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

0
voti

[18] Re: I risultati di questa applicazione sono attendibili ?

Messaggioda Foto Utenteangus » 19 mag 2013, 0:13

"...barando su un'unica lettera..."
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

6
voti

[19] Re: I risultati di questa applicazione sono attendibili ?

Messaggioda Foto Utenteadmin » 19 mag 2013, 2:51

Avatar utente
Foto Utenteadmin
196,6k 9 12 17
Manager
Manager
 
Messaggi: 11949
Iscritto il: 6 ago 2004, 13:14

6
voti

[20] Re: I risultati di questa applicazione sono attendibili ?

Messaggioda Foto UtenteDirtyDeeds » 19 mag 2013, 12:49

Cyclotron.jpg
Cyclotron.jpg (119.39 KiB) Osservato 3038 volte
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

PrecedenteProssimo

Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti