Calcolatrice

di il
5 risposte

Calcolatrice

Ho delle domande sul layout della calcolatrice che sto realizzando, perchè quando avvio la calcolatrice mi apre anche il terminale e il contenuto della calcolatrice non è sempre visibile(devo allargarla per poterla vedere in quanto a volte esce il frame completamente azzurrino)
Poi come posso fare per variare le dimensioni dell'etichetta e dei tasti CE/C, devo usare null come layout?
import javax.swing.*;
import java.awt.*;
class Calcolatrice extends JFrame {
	//costruttore
	public Calcolatrice() {
		super(); //invoca costruttore di JFrame
		setTitle("Calcolatrice");
		setSize(300,300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		setResizable(true);
		inizializzaGUI();
	}
	public void inizializzaGUI() {
		JPanel intermedio; //pannello intermedio-principale
		JPanel tasti; //pannello secondario per i tasti
		JPanel cancella; //pannello secondario per cancellare
		JLabel etichetta;
		JButton cancellaC; //C
		JButton cancellaCE; //CE
		JButton zero,uno,due,tre,quattro,cinque,sei,sette,otto,nove,div,molt,som,sotr,virgola,segno,uguale,radice,percent;
		JButton definire; //pulsante da definire;
		// costruzione dei tre pannelli col rispettivo layout
		tasti = new JPanel();
		tasti.setLayout(new GridLayout(4,5));
		intermedio = new JPanel();
		intermedio.setLayout(new GridLayout(3,1));
		cancella = new JPanel();
		cancella.setLayout(new GridLayout(1,2));
		etichetta = new JLabel("0");
		//assegnazione di tutti i bottoni ed etichetta
		cancellaC = new JButton("C");
		cancellaCE = new JButton("CE");
		zero = new JButton("0");
		uno = new JButton("1");
		due = new JButton("2");	
		tre = new JButton("3");
		quattro = new JButton("4");
		cinque = new JButton("5");
		sei = new JButton("6");
		sette = new JButton("7");
		otto = new JButton("8");
		nove = new JButton("9");
		div = new JButton("/");
		molt = new JButton("*");
		som = new JButton("+");
		sotr = new JButton("-");
		virgola = new JButton(",");
		segno = new JButton("+/-");
		uguale = new JButton("=");
		radice = new JButton("sqrt");
		percent = new JButton("%");
		definire = new JButton("1/x");
		//aggiunta Component(atomici) ai vari pannelli
		cancella.add(cancellaCE);
		cancella.add(cancellaC);
		tasti.add(sette);
		tasti.add(otto);
		tasti.add(nove);
		tasti.add(div);
		tasti.add(radice);
		tasti.add(quattro);
		tasti.add(cinque);
		tasti.add(sei);
		tasti.add(molt);
		tasti.add(percent);
		tasti.add(uno);
		tasti.add(due);
		tasti.add(tre);
		tasti.add(sotr);
		tasti.add(definire);
		tasti.add(zero);
		tasti.add(segno);
		tasti.add(virgola);
		tasti.add(som);
		tasti.add(uguale);
		//aggiunta dei vari pannelli al pannello principale(Intermedio)
		intermedio.add(etichetta);
		intermedio.add(cancella);
		intermedio.add(tasti);
		//aggiunta pannelo principale(Intermedio) al Frame
		getContentPane().add(intermedio);
	}
	public static void main(String[] args) {
		new Calcolatrice();
	}
}

5 Risposte

  • Re: Calcolatrice

    Due cose si notano subito:
    1) il setVisible(true) sulle finestre è generalmente sempre l'ultima cosa da fare. Se lo fai prima e dopo fai altre modifiche alla interfaccia .. ci sono altre questioni su cui per ora non entro in dettagli.
    2) è sempre bene e meglio far partire tutta la creazione della interfaccia nel contesto del Event Dispatch Thread (e non del main thread) usando il "solito" SwingUtilities.invokeLater, a cui dovrai abituarti (vedi miei java examples).
  • Re: Calcolatrice

    andbin ha scritto:


    Due cose si notano subito:
    1) il setVisible(true) sulle finestre è generalmente sempre l'ultima cosa da fare. Se lo fai prima e dopo fai altre modifiche alla interfaccia .. ci sono altre questioni su cui per ora non entro in dettagli.
    Ti ringrazio, ma perchè bisogna utilizzare tutti questi metodi se ho visto un tutorial che mostra eclipse che semplifica di molto queste operazioni ?
  • Re: Calcolatrice

    andbin ha scritto:


    2) è sempre bene e meglio far partire tutta la creazione della interfaccia nel contesto del Event Dispatch Thread (e non del main thread) usando il "solito" SwingUtilities.invokeLater, a cui dovrai abituarti (vedi miei java examples).
    Non ho ben capito questo passaggio...
  • Re: Calcolatrice

    Fab996 ha scritto:


    ma perchè bisogna utilizzare tutti questi metodi se ho visto un tutorial che mostra eclipse che semplifica di molto queste operazioni ?
    Se ti riferisci al fatto che esistono gli editor "visuali" delle interfacce grafiche, sì semplificano/velocizzano ma ... a discapito di altro. Se stai imparando Swing (in generale le GUI), il consiglio è di non usare editor "visuali". Scrivi tutto il codice per la GUI "a mano".
    Se è questo che intendevi (altrimenti precisa meglio).

    Fab996 ha scritto:


    andbin ha scritto:


    2) è sempre bene e meglio far partire tutta la creazione della interfaccia nel contesto del Event Dispatch Thread (e non del main thread) usando il "solito" SwingUtilities.invokeLater, a cui dovrai abituarti (vedi miei java examples).
    Non ho ben capito questo passaggio...
    Se hai tempo/voglia e non hai problemi con l'inglese, puoi leggere Lesson: Concurrency in Swing

    Se poi non fosse chiaro, posso dare una breve spiegazione.
  • Re: Calcolatrice

    Ti ringrazio per i consigli scusa se ti rispondo solo ora, ma non mi è arrivata la notifica tramite e-mail
Devi accedere o registrarti per scrivere nel forum
5 risposte