Visualizzazione dei risultati da 1 a 7 su 7

Discussione: problema JFrame

  1. #1

    problema JFrame

    ciao

    in un esempio degno di considerazione ho trovato un codice tipo questo :

    codice:
    public class JFrame1 extends JFrame {
       
       public int numanag = 0;
       public String s_numanag = "";
      
        public JFrame1() {
            initUI();
        }
    
        public final void initUI() {
    
           JButton quitButton = new JButton("Quit");
           quitButton.setBounds(50, 60, 80, 30);
          
           JLabel numero = new JLabel("num.anagrafiche");
           JLabel msg = new JLabel("inserire numero anagrafiche desiderate");
           final JTextField uno = new JTextField();
          
           //JPanel panel = new JPanel(new GridLayout(2, 3));
           JPanel panel = new JPanel();
           getContentPane().add(panel);
           //ContentPane panel = new getContentPane();
    
           panel.setLayout(new GridLayout(2, 3));
          
           panel.add(numero);
           panel.add(msg);
           panel.add(uno);
           panel.add(quitButton);
           
           setTitle("Quit button");
           setSize(300, 200);
           setLocationRelativeTo(null);
           setDefaultCloseOperation(EXIT_ON_CLOSE);
    
           //quitButton.addActionListener( new buttonListener() );
           quitButton.addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e)
                {
                    //String s_numamag ="";
                    System.out.println("You clicked the button");
                    s_numanag = uno.getText();
                    //System.exit(0);
                   
                }
            });     
        }
    
         public static void main(String[] args) {
    
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    JFrame1 ex = new JFrame1();
                    ex.setVisible(true);
                }
            });
    
        }
    
    }
    non si riusciva a compilare , con l'aiuto di un collega alla fine si è capito
    che tolto il final in public final void initUI()
    le cose sono andate a posto ,

    per favore potete spiegarmi perchè non andava bene , visto che l'esempio era
    considerato perfetto ?
    grazie, ciao

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non c'è alcun problema.
    Quel codice è perfettamente compilabile ed eseguibile.
    (ho fatto copia e incolla)

    Si può discutere sulla sua "utilità" (almeno quella del pulsante), ma dal punto di vista puramente algoritmico/sintattico è tutto a posto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ok , scusa però perchè ci vuole il final ?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da gbu123
    ok , scusa però perchè ci vuole il final ?
    Il final è "facoltativo"... se lo marchi come final, un'eventuale sottoclasse di JFrame1 non potrà ridefinire tale metodo, altrimenti potrà farlo... dipende da ciò che vuoi consentire alle sottoclassi.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    ciao
    grazie delle delucidazioni , però perchè se ho indicato :

    codice:
    panel.setLayout(new GridLayout(2, 3));
    mi compaiono solo 2 righe e 2 colonne ?
    ho provato anche a cambiare i numeri ma sempre quello compare ;

    grazie
    ciao

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Un GridLayout(2, 3) è un LayoutManager in grado di gestire 6 componenti, disposti su 2 righe e 3 colonne. E' chiaro che per vedere le 2 righe e 3 colonne è necessario inserire nel pannello 6 componenti... Tu ne hai inseriti solo 4.

    In questo caso il numero di colonne viene ignorato: è scritto nella documentazione

    When both the number of rows and the number of columns have been set to non-zero values, either by a constructor or by the setRows and setColumns methods, the number of columns specified is ignored. Instead, the number of columns is determined from the specified number of rows and the total number of components in the layout.
    Se entrambi i valori (numero righe e numero colonne) sono specificati, allora il numero di colonne viene ignorato ed il LayoutManager adagerà i componenti in base al numero di righe e al numero dei componenti stesso.

    Tu hai solo 4 componenti, quindi sono sufficienti 2 righe e 2 colonne per adagiarli tutti e questo viene fatto.

    Prova ad aggiungere anche gli altri due componenti mancanti e, come per magia, tutte le colonne saranno occupate.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    grazie mille , mi spiace disturbare per cose banali ...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.