Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Layout

  1. #1

    Layout

    Salve a tutti,

    sto realizzando una minicalcolatrice ma ho un problema con i layout. La mia idea era di crearne due: in quello superiore mettere tutti i bottoni e in quello inferiore mettere la label dei risultati. Purtroppo non riesco a concludere. P.S. Sto sviluppando con NetBeans.

    Questo è ciò che vorrei fare

    https://www.google.it/search?q=java+...CjZPkHYiZ7M%3A

    Grazie

  2. #2
    bene, facci vedere quello che hai prodotto altrimenti sarà difficile aiutarti
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Salve a tutti,
    scusate il ritardo ma ho avuto dei problemi. Riporto il codice creato.
    codice:
    import java.awt.GridLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    
    
    public class Calc extends JFrame{
    
    
        JButton[] pulsanti = new JButton[9];
        
        public Calc() {
            initComponents();
    		GridLayout grid = new GridLayout(3, 3);
    		setLayout(grid);
            
    		for(int k = 0; k < pulsanti.length; k++) {
                pulsanti[k] = new JButton();
                add(pulsanti[k]);
    		}
        } 
        
        
        
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
    
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jMenuNew = new javax.swing.JMenuItem();
            jSeparator1 = new javax.swing.JPopupMenu.Separator();
            jMenuStatistics = new javax.swing.JMenuItem();
            jMenuSettings = new javax.swing.JMenuItem();
            jMenuSave = new javax.swing.JMenuItem();
            jSeparator2 = new javax.swing.JPopupMenu.Separator();
            jMenuEsc = new javax.swing.JMenuItem();
            jMenu2 = new javax.swing.JMenu();
            jMenuGuide = new javax.swing.JMenuItem();
    
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            setTitle("Calcolatrice");
            setMinimumSize(new java.awt.Dimension(400, 320));
    
    
            jMenu1.setText("File");
    
    
            jMenuNew.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, 0));
            jMenuNew.setText("A");
            jMenu1.add(jMenuNew);
            jMenu1.add(jSeparator1);
    
    
            jMenuStatistics.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, 0));
            jMenuStatistics.setText("B");
            jMenu1.add(jMenuStatistics);
    
    
            jMenuSettings.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0));
            jMenuSettings.setText("Impostazioni");
            jMenu1.add(jMenuSettings);
    
    
            jMenuSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
            jMenuSave.setText("D");
            jMenu1.add(jMenuSave);
            jMenu1.add(jSeparator2);
    
    
            jMenuEsc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0));
            jMenuEsc.setText("Esci");
            jMenu1.add(jMenuEsc);
    
    
            jMenuBar1.add(jMenu1);
    
    
            jMenu2.setText("Aiuto");
    
    
            jMenuGuide.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0));
            jMenuGuide.setText("H");
            jMenu2.add(jMenuGuide);
    
    
            jMenuBar1.add(jMenu2);
    
    
            setJMenuBar(jMenuBar1);
    
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 410, Short.MAX_VALUE)
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 279, Short.MAX_VALUE)
            );
    
    
            pack();
            setLocationRelativeTo(null);
        }// </editor-fold>                        
        // Variables declaration - do not modify                     
        private javax.swing.JMenu jMenu1;
        private javax.swing.JMenu jMenu2;
        private javax.swing.JMenuBar jMenuBar1;
        private javax.swing.JMenuItem jMenuEsc;
        private javax.swing.JMenuItem jMenuGuide;
        private javax.swing.JMenuItem jMenuNew;
        private javax.swing.JMenuItem jMenuSave;
        private javax.swing.JMenuItem jMenuSettings;
        private javax.swing.JMenuItem jMenuStatistics;
        private javax.swing.JPopupMenu.Separator jSeparator1;
        private javax.swing.JPopupMenu.Separator jSeparator2;
        // End of variables declaration                   
    }
    
    Grazie

  4. #4
    Salve a tutti,
    scusate il ritardo ma ho avuto dei problemi. Riporto il codice creato.
    codice:
    import java.awt.GridLayout;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    
    
    public class Calc extends JFrame{
    
    
        JButton[] pulsanti = new JButton[9];
        
        public Calc() {
            initComponents();
            GridLayout grid = new GridLayout(3, 3);
            setLayout(grid);
            
            for(int k = 0; k < pulsanti.length; k++) {
                pulsanti[k] = new JButton();
                add(pulsanti[k]);
            }
        } 
        
        
        
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
    
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jMenuNew = new javax.swing.JMenuItem();
            jSeparator1 = new javax.swing.JPopupMenu.Separator();
            jMenuStatistics = new javax.swing.JMenuItem();
            jMenuSettings = new javax.swing.JMenuItem();
            jMenuSave = new javax.swing.JMenuItem();
            jSeparator2 = new javax.swing.JPopupMenu.Separator();
            jMenuEsc = new javax.swing.JMenuItem();
            jMenu2 = new javax.swing.JMenu();
            jMenuGuide = new javax.swing.JMenuItem();
    
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            setTitle("Calcolatrice");
            setMinimumSize(new java.awt.Dimension(400, 320));
    
    
            jMenu1.setText("File");
    
    
            jMenuNew.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, 0));
            jMenuNew.setText("A");
            jMenu1.add(jMenuNew);
            jMenu1.add(jSeparator1);
    
    
            jMenuStatistics.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, 0));
            jMenuStatistics.setText("B");
            jMenu1.add(jMenuStatistics);
    
    
            jMenuSettings.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0));
            jMenuSettings.setText("Impostazioni");
            jMenu1.add(jMenuSettings);
    
    
            jMenuSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
            jMenuSave.setText("D");
            jMenu1.add(jMenuSave);
            jMenu1.add(jSeparator2);
    
    
            jMenuEsc.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0));
            jMenuEsc.setText("Esci");
            jMenu1.add(jMenuEsc);
    
    
            jMenuBar1.add(jMenu1);
    
    
            jMenu2.setText("Aiuto");
    
    
            jMenuGuide.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0));
            jMenuGuide.setText("H");
            jMenu2.add(jMenuGuide);
    
    
            jMenuBar1.add(jMenu2);
    
    
            setJMenuBar(jMenuBar1);
    
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 410, Short.MAX_VALUE)
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 279, Short.MAX_VALUE)
            );
    
    
            pack();
            setLocationRelativeTo(null);
        }// </editor-fold>                        
        // Variables declaration - do not modify                     
        private javax.swing.JMenu jMenu1;
        private javax.swing.JMenu jMenu2;
        private javax.swing.JMenuBar jMenuBar1;
        private javax.swing.JMenuItem jMenuEsc;
        private javax.swing.JMenuItem jMenuGuide;
        private javax.swing.JMenuItem jMenuNew;
        private javax.swing.JMenuItem jMenuSave;
        private javax.swing.JMenuItem jMenuSettings;
        private javax.swing.JMenuItem jMenuStatistics;
        private javax.swing.JPopupMenu.Separator jSeparator1;
        private javax.swing.JPopupMenu.Separator jSeparator2;
        // End of variables declaration                   
    }
    
    Grazie

  5. #5
    Qualcuno mi può aiutare per favore?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giovanni255 Visualizza il messaggio
    Qualcuno mi può aiutare per favore?
    A parte il codice che hai postato (che ho letto brevemente), quali sono i tuoi dubbi o problemi?

    Quote Originariamente inviata da Giovanni255 Visualizza il messaggio
    La mia idea era di crearne due: in quello superiore mettere tutti i bottoni e in quello inferiore mettere la label dei risultati.
    Se questo è l'obiettivo, una soluzione è avere il content-pane con il BorderLayout (che è predefinito, se non viene cambiato) e nella parte CENTER metti un JPanel che ha un GridLayout che contiene i JButton. Poi nella parte SOUTH (o NORTH) del BorderLayout metti la label con il risultato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Ciao e grazie della risposta.
    Ho provato ma il frame che si apre è vuoto.

    codice:
    	static JLabel endLbl;
        static JPanel btnPanel = new JPanel();        
        
    	public Calc() {
            
    		btnPanel.setLayout(new GridLayout(3,3));
            
            for(int i = 0; i < btn.length; i++) {
                btn[i] = new JButton();
                
    			btnPanel.add(btn[i]);  
            }
            
            btnPanel.setVisible(true);        
            getContentPane().add(btnPanel, BorderLayout.CENTER);
            
            
    		endLbl = new JLabel("StatusBar");        
            getContentPane().add(endLbl, BorderLayout.PAGE_END);
        }

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Partiamo da qualcosa di corretto e appropriato:

    Questo:

    codice:
    import java.awt.*;
    import javax.swing.*;
    
    public class Calc extends JFrame {
        private JButton[] pulsanti;
        private JPanel pannelloPulsanti;
        private JLabel etichettaRisultato;
    
        public Calc() {
            super("Calc");
            setDefaultCloseOperation(EXIT_ON_CLOSE);
    
            pulsanti = new JButton[9];
            pannelloPulsanti = new JPanel(new GridLayout(3, 3));
            etichettaRisultato = new JLabel("Risultato");
    
            for (int i = 0; i < pulsanti.length; i++) {
                pulsanti[i] = new JButton(String.valueOf(i+1));
                pannelloPulsanti.add(pulsanti[i]);
            }
    
            getContentPane().add(pannelloPulsanti, BorderLayout.CENTER);
            getContentPane().add(etichettaRisultato, BorderLayout.PAGE_END);
            pack();
        }
    
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new Calc().setVisible(true);
                }
            });
        }
    }

    è corretto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Ok grazie, sono riuscito.
    Una semplice curiosità: come faresti il restart di questa applicazione? Ovvero clicco sul pulsante riavvia e si riavvia tutto?

    Grazie

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giovanni255 Visualizza il messaggio
    come faresti il restart di questa applicazione? Ovvero clicco sul pulsante riavvia e si riavvia tutto?
    Riavviare nel senso di far terminare la applicazione e quindi il processo della JVM e poi rilanciare la JVM? Questo è un po' critico, generalmente non si fa. Perché la applicazione Java può essere avviata in svariati modi e soprattutto con specifiche opzioni (es. per il heap-space) per la JVM.
    Lo si fa solo in quei casi in cui "a monte" c'è uno script/batch/eseguibile nativo che lancia la JVM in un modo prestabilito ben preciso e che può essere quindi facilmente rieseguito, ad esempio facendo in modo che la applicazione Java termini con un status code preciso (o segnalandolo in altro modo) per cui lo script/batch/eseguibile capisce che deve riavviare la applicazione.

    Se invece intendi chiudere una finestra e ricreare il frame, questo sì è più facile e fattibile. Ma a parte questo, se intendi più banalmente "resettare" lo stato della applicazione o di una finestra, allora non c'è da "riavviare" un bel nulla. Basta solo cambiare lo stato di componenti e/o strutture dati in modo appropriato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.