Visualizzazione dei risultati da 1 a 10 su 12

Visualizzazione discussione

  1. #7
    Le uniche differenze dal tuo codice sono che ho creato una nuova classe per il main (ho letto in giro su internet che conviene farlo) e che non uso il metodo pack() perchè ho un gridlayout e avrei una finestra priva di dimensioni.

    In ogni caso posto il codice:
    codice:
    import java.awt.Color;import java.awt.Container;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.BorderFactory;
    import javax.swing.ButtonGroup;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JRadioButton;
    import javax.swing.JTextField;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import javax.swing.border.LineBorder;
    import javax.swing.SwingConstants;
    
    
    public class Finestra extends JFrame{
        Container mainContainer;
        JTextField mazzo, carte, percentuale;
        JRadioButton primo, secondo;
    
    
        public Finestra() {
            JFrame window = new JFrame("Calcolo Probabilità");
            window.setSize(347, 228);
            window.setResizable(false);
            window.setLocationRelativeTo(null);
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    
            mainContainer = window.getContentPane();
            mainContainer.setLayout(new GridLayout(5, 2));
            
            JPanel panelMazzo1 = new JPanel();
            mainContainer.add(panelMazzo1);
            JLabel labelMazzo = new JLabel("Numero di carte nel mazzo:");
            panelMazzo1.add(labelMazzo);
            
            JPanel panelMazzo2 = new JPanel();
            mainContainer.add(panelMazzo2);
            mazzo = new JTextField();
            mazzo.setPreferredSize(new Dimension(6, 24));
            mazzo.setColumns(5);
            mazzo.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            panelMazzo2.add(mazzo);
            
            JPanel panelCarte1 = new JPanel();
            mainContainer.add(panelCarte1);
            JLabel labelCarte = new JLabel("<html>Numero di carte di cui<br>calcolare la probabilità:</html>");
            panelCarte1.add(labelCarte);
            
            JPanel panelCarte2 = new JPanel();
            mainContainer.add(panelCarte2);
            carte = new JTextField();
            carte.setPreferredSize(new Dimension(6, 24));
            carte.setColumns(5);
            carte.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            panelCarte2.add(carte);
            
            JPanel panelPartenza1 = new JPanel();
            mainContainer.add(panelPartenza1);
            JLabel labelPartenza = new JLabel("Partenza:");
            panelPartenza1.add(labelPartenza);
            
            JPanel panelPartenza2 = new JPanel();
            mainContainer.add(panelPartenza2);
            ButtonGroup group = new ButtonGroup();
            primo = new JRadioButton("Primo", true);
            secondo = new JRadioButton("Secondo");
            group.add(primo);
            group.add(secondo);
            panelPartenza2.add(primo);
            panelPartenza2.add(secondo);
            
            JPanel panelBottoni1 = new JPanel();
            mainContainer.add(panelBottoni1);
            JButton calcola = new JButton("Calcola");
            calcola.addActionListener(new clickBottone());
            panelBottoni1.add(calcola);
            
            JPanel panelBottoni2 = new JPanel();
            mainContainer.add(panelBottoni2);
            JButton reset = new JButton("Reset");
            panelBottoni2.add(reset);
            reset.addActionListener(new resetBottone());
            
            JPanel panelPercentuale1 = new JPanel();
            mainContainer.add(panelPercentuale1);
            panelPercentuale1.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
            JLabel labelPercentuale = new JLabel("Percentuale:");
            panelPercentuale1.add(labelPercentuale);
            
            JPanel panelPercentuale2 = new JPanel();
            mainContainer.add(panelPercentuale2);
            percentuale = new JTextField();
            percentuale.setHorizontalAlignment(SwingConstants.CENTER);
            percentuale.setPreferredSize(new Dimension(6, 24));
            percentuale.setEditable(false);
            percentuale.setColumns(4);
            panelPercentuale2.add(percentuale);
            percentuale.setBorder(new LineBorder(new Color(0, 0, 0), 0));
            
            //window.setVisible(true);
        }
    
    
        private class clickBottone implements ActionListener {
            public void actionPerformed(ActionEvent e){
                int p=0,n,c;
                float val=1;
                try{
                    n=Integer.valueOf(mazzo.getText() );
                    c=Integer.valueOf(carte.getText() );
                    if(n<=60 && c<=n && c>=0){
                        if(secondo.isSelected()) p=1;
                        for(int i=0;i<5+p;i++){
                            val=val*(n-c)/n;
                            n--;
                        }
                        val=Math.round((1-val)*1000);
                        val/=10;
                        String str=val+"%";
                        percentuale.setText(str);
                        percentuale.setBackground(Color.red);
                    }else{
                        JOptionPane.showMessageDialog(null, "Valori inseriti errati");
                    }
                }catch(Exception exc){
                    JOptionPane.showMessageDialog(null, "Valori inseriti errati");        
                }
                
            }
        }
    
    
        private class resetBottone implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                mazzo.setText("");
                carte.setText("");
                primo.setSelected(true);
                percentuale.setBackground(Color.white);
                percentuale.setText("");
            }
        }
    
    
    }
    codice:
    
    public class Principale {
    public static void main(String[] args) {
        Finestra finestra1 = new Finestra();
        finestra1.setVisible(true);
    }
    }
    Già che ci sei se noti qualcosa che faccio che però conviene fare diversamente fammelo notare, vorrei imparare anche lo "stile di scrittura" di un codice.
    Ultima modifica di ixol; 21-04-2016 a 17:43

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.