Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Abbiamo provato le nuove CPU Intel Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: più core e ottimizzazioni al funzionamento interno migliorano le prestazioni, anche in virtù di prezzi annunciati interessanti. A questo si aggiungono nuove ottimizzazioni software. Purtroppo, a fronte di prestazioni di calcolo elevate, il quadro rimane incerto nel gaming, dove l'andamento rimane altalenante. Infine, rimane il problema della piattaforma a fine vita.
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
Il modello "build to order" di PCSpecialist permette di selezionare una struttura base per un sistema, personalizzandolo in base alle specifiche esigenze con una notevole flessibilità di scelta tra i componenti. Il modello Lafité 14 AI AMD è un classico notebook clamshell compatto e potente, capace di assicurare una elevata autonomia di funzionamento anche lontano dalla presa di corrente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-04-2006, 01: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 15:25.
boysna è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2006, 07: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, 21: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, 14: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, 15: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, 18: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, 20: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, 20: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, 21: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, 21: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, 21: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, 22: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, 01: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, 07: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, 10: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, 11: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, 12: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, 13: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


Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto Recensione Nothing Phone 4(a): sempre iconico ma...
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
Intel BOT altera i risultati, Geekbench ...
Intel e AMD faticano a soddisfare la dom...
Microsoft e NVIDIA insieme per dare una ...
Ring rinnova l'intera gamma video: 4K su...
Recensione Galaxy Buds4 Pro: le cuffie S...
Spotify si arricchisce ancora: arriva So...
I digital twin di AVEVA a supporto delle...
Iliad non si ferma: clienti in crescita ...
XuanTie C950, il chip IA di Alibaba basa...
Volkswagen richiama 94.000 auto elettric...
Le nuove LaserJet di HP portano la critt...
FSR 4 gira sulla GPU di PS5 Pro, ma non ...
Intel rinnova l'offerta professionale: C...
Galaxy A57 5G e A37 5G ufficiali: l'IA d...
Outlook Classic e Gmail: Microsoft pubbl...
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: 18:31.


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