Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    [JAVA] display e pulsanti calcolatrice

    Ragazzi, stò cercando di creare una piccola calcolatrice in Java, fino ad ora ho fatto moco ed è il seguente:

    Premetto che funziona tutto, solo che ho un errore riguardo al metodo add con il display.

    Main.java
    codice:
    	public static void main(String[] args) {
    		// Qui verranno istanziati tutti gli oggetti che compongono la tua applicazione
    		Windows w = new Windows();
    	}
    }
    Windows.java
    codice:
    import java.awt.*;
    import javax.swing.JFrame;
    
    public class Windows extends JFrame {
    	public Windows() {
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		Container c = getContentPane();
    		c.setLayout(new BorderLayout());
    			add(new Display(), BorderLayout.NORTH);
    		setTitle("Calcolatrice");
    		setSize(250,350);
    		setVisible(true);
    	}
    }
    Display.java
    codice:
    import javax.swing.JTextField;
    
    public class Display {
    
    	public Display(){
    		JTextField display = new JTextField();
    		display.setText("Qui la stringa");
    		display.setEditable(false);
    	}
    	
    }
    codice:
    The method add(String, Component) in the type Container is not applicable for the arguments (Display, String)
    Praticamente quando compilo il tutto, mi dà l'errore che ho riportato sopra. che ha a che fare con il metodo add. Come posso risolvere, inoltre, io dovrei inserire in alto alla finestra un display non editabile, all'interno del quale escono i risultati delle operazioni(come la calcolatrice di windows), mentre sotto la finestra devo avere i pulsanti.
    Per quest'ultimi ho visto che posso fare:

    codice:
                    c.setLayout(new GridLayout(6,5));
    	        add(new Button("1"));
    	        add(new Button("2"));
    	        add(new Button("3"));
    	        add(new Button("4"));
    	        add(new Button("5"));
    	        add(new Button("6"));
    	        add(new Button("7"));
    	        add(new Button("8"));
    	        add(new Button("9"));
    	        add(new Button("0"));
    Però se volessi dargli uno stile, es, larghezza e altezza 40 x 40, effetto che quando ci vai sopra brillano un pò, come posso fare?


    Grazie anticipatamente.
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    La tua classe Display dovrebbe estendere un Component, in particolare qualcosa come un JTextComponent, altrimenti non puoi aggiungerla col metodo add, il quale ovviamente accetti solo componenti dedicati alle interfacce grafiche.

    Riguardo ai bottoni, è mostruosamente scomodo gestirli così, oltre che insensato: crea i tuoi JButton singolarmente (con variabili intendo), personalizzali come preferisci, se vuoi gestiscili anche tramite uno o più array, aggiungi gli ascoltatori di eventi, insomma facci quello che vuoi... e solo dopo aggiungili al Container. O crea addirittura una tua classe che estenda quella del framework se necessario.
    Ho citato componenti di Swing perché è consigliabile usare quelli, ma nulla ti vieta di usare Button e altri componenti AWT.

    Comunque penso che il layout manager debba essere uno ed unico per ogni componente, non so che effetti abbia la ridefinizione del layout manager.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    La classe Display deve contenere solo un campo di testo?
    In questo caso puoi scegliere se:

    1) Estendere JTextField;
    2) Estendere JPanel e dichiarare al suo interno i componenti che ti servono;

    Esempio:

    codice:
    class Display extends JPanel {
      // .....
    L'errore non fa altro che dirti che serve una sottoclasse (o la classe) Container, e Display non fa parte della sua gerarchia (se non erediti nulla).


    Per quanto riguarda il focus sui bottoni, credo si possano ottenere effetti simili utilizzando JLayer (ma non so darti info, non l'ho ancora utilizzata); oppure puoi registrare un MouseListener su tutti i bottoni.


    PS: Anticipato, non avevo ricaricato la pagina prima di inviare.

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.