Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 14 su 14

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    La classe estende un jFrame... ho messo this.add(jPanel1); ma fa lo stesso. Ho istanziato un JFrame, gli ho aggiunto il panel e fa lo stesso...

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Ok piccolo passo avanti. Adesso riesco a visualizzare la finestra coi pulsanti.
    Problema: i pulsanti sono molto piccoli. Ma se faccio button.setSize(); non cambia nulla.
    Anche il tentativo di impostare una dimensione sia per il frame che per il panel non ha effetto.
    Perché?


    codice:
    private static void createAndShowGUI() {
    
            try {
                Scanner scan = new Scanner(new File("tables.txt"));
                tablesNumber = scan.nextInt();
            } catch (FileNotFoundException ex) {
                JOptionPane.showMessageDialog(null, "Il file tables.txt non esiste!", "", JOptionPane.ERROR_MESSAGE);
            }
    
            JFrame frame = new JFrame("Tables");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JPanel jPanel1 = new JPanel();
            jPanel1.setSize(1024, 768);
            jPanel1 = new JPanel(new GridLayout(9, 5));
            
            jPanel1.setBackground(new Color(255, 255, 153));
            jPanel1.setBorder(new LineBorder(Color.BLACK));
    
            for (int i = 1; i <= tablesNumber; i++) {
                JButton button = new JButton(Integer.toString(i));
                button.setSize(50, 50);
                //button.setActionCommand(Integer.toString(i));
                button.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        new SingoloTavolo().setVisible(true);
                    }
                });
                jPanel1.add(button);
            }
            frame.getContentPane().add(jPanel1);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            
        }

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Ok ho risolto anche questa, l'istruzione da usare è setPreferredSize.
    Adesso vorrei mettere un piccolo spazio fra un pulsante e l'altro, sarebbe possibile?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Dunque avrei risolto un po' di problemi ma non riesco bene a ottenere il risultato che vorrei.
    Mi spiego: il numero di pulsanti è variabile. Potrebbero essere 10 come 20 o 30 o 40...Non è un dato che cambierà una volta impostato ma io devo prevedere ogni possibilità, o comunque almeno le più probabili.
    Io vorrei che i pulsanti avessero una dimensione fissa, perché non voglio ritrovarmi coi pulsanti giganti se i tavoli sono pochi (ogni pulsante rappresenta un tavolo).
    Ma se uso GridLayout i pulsanti si autodimensionano per occupare tutto lo spazio disponibile.
    Se tolgo il:
    setPreferredSize(new Dimension(500, 700));
    al frame principale
    ho il problema che se i tavoli sono pochi viene fuori una finestra piccolina, che è bruttina.
    Quindi io vorrei:
    - che la finestra abbia una dimensione minima scelta da me, ma che si allarghi all'occorrenza se i pulsanti sono tanti
    - che i pulsanti abbiano una dimensione minima scelta da me

    Si può fare?
    Grazie.

    codice:
    private void initComponents() {
    
            setPreferredSize(new Dimension(500, 700));
            jPanelSouth = new JPanel();
            jPanelSouth.setPreferredSize(new Dimension(500, 80));
            setDefaultCloseOperation(DISPOSE_ON_CLOSE);
           
            if (tablesNumber<=9) {
                layout = new GridLayout(3, 3);
            } else if (tablesNumber >9 && tablesNumber<=18) {
                layout = new GridLayout(6, 3);
            } else if (tablesNumber >18 && tablesNumber<=27) {
                layout = new GridLayout(9, 3);
            } else {
                layout = new GridLayout(10,3);
            }
    
            layout.setHgap(10);
            layout.setVgap(10);
            jPanel1 = new JPanel(layout);
    
            for (int i = 1; i <= tablesNumber; i++) {
                JButton button = new JButton(Integer.toString(i));
                button.setPreferredSize(new Dimension(80, 40));
                button.setBackground(new Color(255, 255, 153));
                button.setActionCommand(Integer.toString(i));
                button.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        new SingoloTavolo().setVisible(true);
                    }
                });
                jPanel1.add(button);
            }
    
            bBack = new JButton("Indietro");
            bBack.setPreferredSize(new Dimension(80,30));
            jPanelSouth.add(bBack, BorderLayout.CENTER);
    
            bBack.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    dispose();
                }
            });
    
            getContentPane().add(jPanel1);
            getContentPane().add(jPanelSouth, BorderLayout.PAGE_END);
            pack();
            setLocationRelativeTo(null);
        }

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.