Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-04-2006, 00:19   #1
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
Vari componenti Swing in Java

Salve a tutti. Vi devo chiedere una cosa veloce: perchè la scrollbar che creo in un frame con questo codice non ha effetto sulla JTextArea associata?

Ecco il codice:
Codice:
public class GiocoFrame extends JFrame {

	private JScrollPane scroller;
	public JTextArea testo;
	private Container c;
	public JPanel panel;

	public GiocoFrame() {
		
		this.setSize(350, 400);
		this.setTitle("Gioco della sedia");
		
		panel = new JPanel(new FlowLayout());

		c = getContentPane();		

		testo = new JTextArea(17, 20);
		
		scroller = new JScrollPane(testo,	                                      scroller.VERTICAL_SCROLLBAR_ALWAYS,
                                                scroller.HORIZONTAL_SCROLLBAR_NEVER);
				
		c.add(scroller,BorderLayout.CENTER);
	
		testo.setCaretPosition(testo.getHeight());
		panel.add(testo);
		
		Dimension d = new Dimension(20, 100);
		scroller.setPreferredSize(d);
		panel.add(scroller);
		
		c.add(panel);
		this.setVisible(true);


	}
}

Ultima modifica di boysna : 10-04-2006 alle 14:25.
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2006, 06:30   #2
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Come mai hai aggiunto la JTextArea "testo" sia alla JScrollPane sia al panel "panel"? Idem per scroller?
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2006, 20:38   #3
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
Grazie mille. Il tuo consiglio mi ha risolto il problema e fatto in modo di finire il lavoro entro il tempo necessario per poter andare a seguire un Corso all'Università che altrimenti non avrei potuto seguire per terminare l'elaborato.

Grazie ancora.

Scusa la domanda:m a sei programmatore esperto in JAva, visto che ogni discussione che apro in questa sezione mi rispondi sempre tu. Grazie.
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2006, 13:46   #4
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
Ora vorrei aggiungere tre campi di input e un pulsante. Ma il frame visualizzato non mi fa vedere niente. Non capisco perchè. Ecco il codice.

Codice:
//Impostazioni generali del frame
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension dim = kit.getScreenSize();
		int altezza = (int)dim.getHeight();
		int larghezza = (int)dim.getWidth();		
		this.setSize(altezza/2, larghezza/2);
		this.setTitle("Gioco della sedia");
		this.setLocation(100,100);
		
		//Creo pannello e contenitore
		panel = new JPanel(new BorderLayout());
		c = getContentPane();
		
		//Creo area di testo
		testo = new JTextArea(50, 700);
		testo.setEditable(false);		
		
		//Creo lo scrollatore
		scrolla = new JScrollPane(testo,
				scrolla.VERTICAL_SCROLLBAR_ALWAYS,
				scrolla.HORIZONTAL_SCROLLBAR_NEVER);
		Dimension d = new Dimension(900, 700);
		scrolla.setPreferredSize(d);
		setContentPane(scrolla);
		panel.add(scrolla,BorderLayout.CENTER);		

		
		//Creo e aggiungo etichette, ricavando il contenuto
		JLabel labelSessioni = new JLabel("\n\nNumero di Sessioni");
        panel.add(labelSessioni);
		campoSessioni = new JTextField(5);
		panel.add(campoSessioni);

		JLabel labelPersone = new JLabel("\nNumero di Partecipanti");
		panel.add(labelPersone);
		campoPersone = new JTextField(5);
		panel.add(campoPersone);

		JLabel labelSedie = new JLabel("\nNumero di Sedie\n");
		panel.add(labelSedie);
		campoSedie = new JTextField(5);
		panel.add(campoSedie);

		//Creo il bottone e lo aggiungo
		button = new JButton("\nOK");
		/*button.addActionListener(this);*/
		c.add(button);
		c.add(panel);
  
		this.setVisible(true);
		this.show();
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2006, 14:29   #5
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Ciao,
l'istruzione

Codice:
panel.add(labelSessioni);
aggiungera' la label labelSessioni al pannello. Siccome il pannello ha come gestore di layout BorderLayout, per default finira' in centro, rimpiazzando i controlli che c'erano prima.

La stessa cosa vale per le istruzioni

Codice:
c.add(button);
c.add(panel);
Siccome hai ricavato c come
Codice:
c = getContentPane();
succedera' lo stesso gioco di prima.

In questi casi, occorre ripensare alla disposizione che vuoi dare agli oggetti della tua finestra.
Ricorda che non c'e' problema ad usare pannelli all'interno di altri pannelli, creando cosi' la struttura che ti interessa.

Per esempio, non so esattamente cosa devi fare, ma e' probabile che il bottone lo volessi sistemare in fondo allo schermo. Potresti creare un nuovo pannello, mantenere il layout di default (FlowLayout) ed aggiungere questo componente al pannello di partenza, nella parte a sud (BorderLayout.SOUTH).
Questo e' l'aspetto che hanno il 90% dei dialoghi...

Per quanto riguarda il sottoscritto: non penso di essere cosi' esperto. C'e' sempre da imparare.
Il mio lavoro e' nel campo dell'informatica, anche se dal nickname avrai capito che sono un pilota d'aereo (solo PPL, purtroppo ). Cmq sono laureato in informatica, e mi occupo di automazione di grossi impianti siderurgici.

High Flying
Sottovento
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2006, 17:41   #6
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
Ora ho questo problema. Devo creare un Timer e lo faccio cosi:

ScandisceSecondi s= new ScandisceSecondi(secondi, frame, tempo);
this.tempo = new Timer(1000,s);

Questa è la classe che implementa ActionListener:

Codice:
import java.awt.event.ActionEvent;
import javax.swing.Timer;

public class ScandisceSecondi implements ActionListener{
    
    public int secondi;	
    public GiocoFrame frame;
    Timer tempo;


	public ScandisceSecondi(int s, GiocoFrame f, Timer t){
		secondi = s;
		frame=f;
		tempo=t;
	}
	
public void actionPerformed(ActionEvent event) {
				if (secondi > 0) {
					frame.testo.append("\n\tMancano " + secondi
							+ " secondi al via...\n");
					

				}
				if (secondi == 0) {
					frame.testo.append("\t\tVIA!\n");
					tempo.stop();
				}
				secondi--;
			}
		
	
	
}
Purtroppo mi da errore e precisamente questo:
cannot find symbol constructor Timer(int, ScandisceSecondi).
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2006, 19:14   #7
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
PS: ho risolto il problema del messaggio precedente.
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2006, 19:19   #8
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
Poi non capisco perchè se, creando un Timer, lo creo cosi:

Codice:
	Timer chiusuraFrame = new Timer(10000, new ActionListener()

		{
			public void actionPerformed(ActionEvent event)

			{
				frame.dispose();
			}
		});
Perchè mi da questo errore?
cannot fin symbol constructor Timer(int,<anonymous ActionListener>)
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2006, 20:17   #9
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il compilatore riconosce un java.util.Timer ma il costruttore che usi denota l'intenzione di avvalersi di un javax.swing.Timer. Usa il nome pienamente qualificato:

javax.swing.Timer chiusuraFrame = new javax.swing.Timer(int ...eccetera);

o correggi le dichiarazioni di importazione.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2006, 20:30   #10
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
Io ho gia importato "javax.swing.Timer". Ma nonostante questo ho apportato comunque la tua modifica. E l'errore me lo da sempre.
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2006, 20:58   #11
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Mi pare che si possa essere d'accordo sul fatto che la classe javax.swing.Timer effettivamente abbia un costruttore (int, java.awt.event.ActionListener).

La tua classe anonima figlia di ActionListener è inoltre ineccepibilmente esatta.

Prova a sotituire quella porzione di codice con un'indagine riflessiva sul tipo javax.swing.Timer:

Codice:
for(Constructor c : javax.swing.Timer.class.getConstructors()) {
    System.out.println(c);
}
Se compare il costruttore:

public javax.swing.Timer(int,java.awt.event.ActionListener)

ci vuole l'esorcista.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2006, 21:35   #12
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
E si. Il costruttore è quello.

Perchè da questo errore?
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2006, 00:16   #13
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Puoi incollare il codice completo della classe che contiene quella dichiarazione? Così provo a compilarlo, magari è un bug di javac. Ho provato a curiosare nella bugparade di Sun ma non ho trovato nulla di aperto al riguardo.

Il messaggio del compilatore significa che per lui non esiste un costruttore Timer(int, ActionListener), sebbene il test riflessivo dimostri che invece quel costruttore esiste ed è pienamente accessibile (come deve essere).
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2006, 06:47   #14
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da PGI-Bis

ci vuole l'esorcista.
Ho provato a replicare l'errore in questione (copiando la linea di codice data), senza successo.
Comincio a pensare anch'io ad un buon esorcista

Cmq, se e' possibile vedere il codice che genera questo errore...

High Flying
Sottovento
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2006, 09:16   #15
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
Ecco il codice:
Codice:
import java.awt.event.ActionEvent;
import javax.swing.Timer;

public class avviaSessione extends Thread implements ActionListener{
	
	public int numSedie, numPersone, numSessioni, numSessione, secondi;
	Timer tempo, chiusuraFrame;
	GiocoFrame frame = new GiocoFrame();
	public int[] arrayPunteggio;
	public String[] arrayPersone;
	public Sedia[] arraySedie;
	private boolean fineSessione;
	Thread t=null;
	public int numThread;
	
	public avviaSessione(int numSec,int sedie, int persone, int sessioni, int sessione){
		this.numSedie=sedie;
		this.numPersone=persone;
		this.numSessioni=sessioni;
		this.numSessione=sessione;
		this.secondi=numSec;
		
		// creazione Timer per il conto alla rovescia
		ScandisceSecondi s= new ScandisceSecondi(secondi, frame, tempo);
		this.tempo = new Timer(1000,s);
		
		
		// attende 10 secondi dalla fine e chiude il frame
		javax.swing.Timer chiusuraFrame = new javax.swing.Timer(10000, new ActionListener()

		{
			public void actionPerformed(ActionEvent event)

			{
				frame.dispose();
			}
		});
			
		
		// inizializza l'array punteggio
		arrayPunteggio = new int[numPersone];
		for (int i = 0; i < numPersone; i++)
		arrayPunteggio[i] = 0;

		// inizializza l'array persone
	    arrayPersone = new String[numPersone];
		for (int i = 0; i < numPersone; i++)
	    arrayPersone[i] = "persona" + i;

		// inizializza l'array sedie
		 arraySedie = new Sedia[numSedie];
		for (int i = 0; i < numSedie; i++)
		arraySedie[i] = new Sedia("sedia" + i);	
		
		setFine(false);
		Thread t = null;
	}
	
	
     public void actionPerformed(ActionEvent event){     	
     	azzeraNumThread();
			frame.testo.append("\n\t---------- SESSIONE " + numSessione + " ----------\n");

			/*this.secondi = numSec;*/
			tempo.start();
			while (tempo.isRunning()) {
			}

			// avvia i thread per ogni sessione

			for (int i = 0; i < numPersone; i++) {

				t = new Thread(this);
				t.setName(Integer.toString(i));
				t.start();

			}
			setFine(true);

			while (isFine() == true) {
			}

			// libera le sedia a fine sessione
			for (int i = 0; i < numSedie; i++)
				arraySedie[i].libera();

		if(numSessione==numSessioni){
		frame.testo.append("\n\n\t_________FINE GIOCO_________");
		chiusuraFrame.start();
		}
     }
     
     	// restituisce il numero di thread
	public synchronized int getNumThread() {
		return numThread;
	}

	// setta il numero di thread
	public synchronized void setNumThread() {
		this.numThread++;
	}

	// restituisce il nome contenuto nell'array persone
	public synchronized String getNomePersona() {
		return arrayPersone[getNumThread()];
	}

	// azzera il numero di thread attivi
	public synchronized void azzeraNumThread() {
		this.numThread = 0;
	}

	// setta il flag di fine gioco
	public synchronized void setFine(boolean fineSessione) {
		this.fineSessione = fineSessione;
	}

	// restituisce il valore del flag di fine gioco
	public synchronized boolean isFine() {
		return fineSessione;
	}

}
IO compilo con JCreator.
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2006, 10:14   #16
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Ciao,
mancano dei pezzi del codice (per es, class Sedia), per cui non ho provato a compilare.
Comunque sembra che non importi java.awt.event.ActionListener. In tal caso, pero', il messaggio di errore dovrebbe essere diverso.

Prova ad importare e fai sapere

High Flying
Sottovento
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2006, 11:44   #17
boysna
Senior Member
 
Iscritto dal: Mar 2004
Città: castel san giorgio(salerno)
Messaggi: 1218
Ora non sto a casa. Proverò stasera.
Ciao.
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2006, 12:19   #18
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
E' come dice sottovento. Il messaggio del compilatore è corretto, riconosce un tipo di nome ActionListener che incidentalmente è lo stesso dell'ActionListener del package java.awt.event ma, non essendo stato importato il package o il tipo in questione, non corrisponde a quello richiesto dal costruttore di javax.swing.Timer.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Scoperto un 'moltiplicatore nascosto' ne...
DREO: a IFA 2026 4 novità fra cui...
Slackbot genera dashboard e microsite de...
Idrogeno, nuova cella a combustibile rag...
Con la NASA fuori dai giochi, l'ESA risc...
Una falla di ChatGPT permette di estrapo...
Piano clima, 1,34 miliardi per il bonus ...
Porsche esce definitvamente da Bugatti R...
NVIDIA App aggiunge una delle funzioni p...
Come sarebbe il mondo se la luce viaggia...
Titanio, ceramica e zaffiro per HUAWEI W...
Taglio delle accise sul gasolio prorogat...
Universal e ElevenLabs: una piattaforma ...
Astra mette in crisi i server di OpenAI:...
Phanteks EX5: disponibile il case a bloc...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:25.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v