[JAVA/Swing]Aiuti e consigli per principiante
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 6 di 6

Discussione: [JAVA/Swing]Aiuti e consigli per principiante

Cambio titolo
  1. #1
    Utente L'avatar di NightShadow87
    Registrato il
    09-04
    Località
    Roma
    Messaggi
    364

    [JAVA/Swing]Aiuti e consigli per principiante

    Sono agli albori della programmazione di GUI e diciamo che il primo approccio con java non e' stato del tutto ottimo. Ho capito piu o meno la struttura (JFrame <- JPanel <- JComponent o qualcosa di molto simile) e riesco anche a compilare il tutto. Dov'e' il problema? I componenti o si mettono come gli pare o non si mettono proprio... indi per cui:
    Spoiler:

    Codice:
    import javax.swing.*;
    import java.awt.*;
    
    public class Grapher {
        public static void main(String[] args)
        
        throws ClassNotFoundException, IllegalAccessException, InstantiationException {
            
            //Si prova a migliorare il Look and Feel
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (UnsupportedLookAndFeelException e) {
                System.out.println("Unable to load native look and feel");
            }
            
            //Contenitori base
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            JFrame frame = new JFrame();
            JPanel message = new JPanel();
            JPanel input = new JPanel();
            JLabel info = new JLabel();
            JButton draw = new JButton();
            JTextField func = new JTextField();
            
            //Impostazioni varie
            frame.setTitle("Grapher");
            frame.setSize(400,450);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            
            info.setText("Immetti qui la funzione da disegnare");
            
            draw.setText("Disegna");
            
            //Aggiunta ai contenitori (per mantenere un po d'ordine)
            message.add(info);
            
            input.add(func);
            input.add(draw);
            
            frame.getContentPane().add(new Graph());
            frame.add(message);
            frame.add(input);
        }
    }


    Mi mostra solo una finestra con il TextField e il Button relativi all'ultimo add. Provando ad eliminare l'ultima add e a compilare, quello che esce fuori e' che mostra solo l'ultimo add, quindi in questo caso e' il Label. Quindi dipende da come devo inserire i vari Component nel Frame... solo che non so bono (e le guide online scarseggiano sull'argomento).
    L'unica info che sono riuscito ad ottenere e' questa:

    Spoiler:
    Codice:
    frame.setLayout(new GridLayout(0,1));


    Che finalmente mette tutti e tre gli elementi al posto giusto, peccato per le dimensioni (il rettangolo bianco non e' 400x400 ma 400x150).

    Qualcuno puo' darmi una mano magari citando anche qualche sito/libro che spiega PER BENE come iniziare a scrivere GUI in java?

    P.S.: screen

    --------------quello che viene fuori----------------------|---------------quello che vorrei ottenere-----------------

    Ultima modifica di NightShadow87; 17-09-2008 alle 15:02:02



  2. #2
    Utente L'avatar di NightShadow87
    Registrato il
    09-04
    Località
    Roma
    Messaggi
    364
    Ho semirisolto grazie ad un commento nel topic sbagliato

    Per chi vuole dare un'occhiata:

    Spoiler:
    Codice:
    import javax.swing.*;
    import java.awt.*;
    
    public class Grapher {
        public static void main(String[] args)
        
        throws ClassNotFoundException, IllegalAccessException, InstantiationException {
            
            //Si prova a migliorare il Look and Feel
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (UnsupportedLookAndFeelException e) {
                System.out.println("Unable to load native look and feel");
            }
            
            //Contenitori base
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            JFrame frame = new JFrame();
            JPanel input = new JPanel();
            JLabel info = new JLabel();
            JButton draw = new JButton();
            JTextField func = new JTextField();
            
            //Impostazioni varie
            frame.setTitle("Grapher");
            frame.setSize(400,450);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            frame.setLayout(new BorderLayout());
            
            input.setLayout(new BorderLayout());
            
            info.setText("Immetti qui la funzione da disegnare");
            
            draw.setText("Disegna");
            
            //Aggiunta ai contenitori (per mantenere un po d'ordine)
            input.add(info,BorderLayout.NORTH);
            input.add(func,BorderLayout.CENTER);
            input.add(draw,BorderLayout.EAST);
            
            frame.getContentPane().add(new Graph());
            frame.add(input,BorderLayout.SOUTH);
        }
    }



  3. #3
    Utente sempre incazzato L'avatar di andre90boss
    Registrato il
    04-06
    Messaggi
    1.764
    mi spieghi perch&#232; hai scritto:
    JFrame<-JPanel<-JComponent?

    che differenza c'&#232; se tolgo il JPanel?

    per gli esercizi che ho incontrato fino a ora ho sempre usato JFrame + JComponent.

    qualcuno mi potrebbbe spiegare le differenze?

    thanks e scusa x l' "abuso" del topic



  4. #4
    Utente L'avatar di NightShadow87
    Registrato il
    09-04
    Località
    Roma
    Messaggi
    364
    Sinceramente credo sia solo una questione d'ordine. Nel senso se guardi come ho scritto il codice, ho incorporato ogni componente (che svolge un compito specifico) in un pannello distinto e alla fine ho aggiunto questi pannelli al frame.



  5. #5
    Linux User # 477930 L'avatar di Metflar
    Registrato il
    09-06
    Località
    Anagni
    Messaggi
    2.353
    Citazione NightShadow87 Visualizza Messaggio
    Sinceramente credo sia solo una questione d'ordine. Nel senso se guardi come ho scritto il codice, ho incorporato ogni componente (che svolge un compito specifico) in un pannello distinto e alla fine ho aggiunto questi pannelli al frame.
    anche per una questione di layout

    conoscenze: C\C++, Java, PHP,Python

  6. #6
    Utente L'avatar di lorux
    Registrato il
    09-05
    Messaggi
    1.166
    consiglio gridbaglayout

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •