Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Abbiamo giocato a lungo a Battlefield 6, abbiamo provato tutte le modalità multiplayer, Redsec, e le numerose personalizzazioni. In sintesi, ci siamo concentrati su ogni aspetto del titolo per comprendere al meglio uno degli FPS più ambiziosi della storia dei videogiochi e, dopo quasi due mesi, abbiamo tirato le somme. In questo articolo, condividiamo con voi tutto ciò che è Battlefield 6, un gioco che, a nostro avviso, rappresenta esattamente ciò che questo genere attendeva da tempo
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-10-2011, 19:46   #1
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
[Java] Problemi con la gui (pulsanti ecc) help

Salve ragazzi mi sono da qualche giorno cimentato in java! Sono alle prime armi con la programmazione ad oggetti. Sempre sentita dire ma mai usata!
Già c'è il fatto che ancora non ci sono proprio entrato poi certi comandi non riesco ad implementarli per bene...è un mix che mi ha fatto fondere!
Avevo visto un esempio di polimorfismo di un esempio abbastanza classico: quello della classe animale e poi i vari oggetti-> cane, gatto ecc che tramite il metodo getverso() dovrebbero fare il verso a seconda dell'animale selezionato!
L'intezione mia era quella di fare una finestra con vari bottoni uno per ogni animale poi associare ad ognuno una figura e un suono!
Chiaramente prima di scrivere ho cercato ma non sono riuscito a venirne fuori! In primis ho visto che ci sono due approcci awt e swing e da quello che ho capito il secondo è quello più gradito implementato dalla seconda versione tanto che ci sono alcuni metodi "deprecati" quali show().
Ora vi metto il macello di codice che ho scritto
Codice:
java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;

public class Fattoria extends Frame {
	private JFrame frame;
	private JButton button1;
	private JButton button2;	
	private JButton button3;
	private JButton button4;
	private JButton button5;
	private JButton button6;
	private JButton button7;
	private JButton button8;
	private JButton button9;

	public Fattoria()  {
		super();
		frame = new JFrame("Fattoria");
		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setBackground(null);
		frame.setSize(new Dimension(1000, 1000));
	    frame.getContentPane().setLayout(new FlowLayout());

		
		 frame.ImageIcon icon = new ImageIcon("cane.gif");
		

				
		button1 = new JButton("Cane", icon);
		button1.setIcon(icon);
				 button1.setDisabledIcon(icon);
				 button1.setEnabled(false);
		button2 = new JButton("Gatto");
		button3 = new JButton("Cavallo");
		button4 = new JButton("Elefante");
		button5 = new JButton("Tigre");
		button6 = new JButton("Lupo");
		button7 = new JButton("Rana");
		button8 = new JButton("Maiale");
		button9 = new JButton("Mucca");
		
		button1.setBackground(Color.red);
		button2.setBackground(Color.green);
		button3.setBackground(Color.white);
		button4.setBackground(Color.red);
		button5.setBackground(Color.green);
		button6.setBackground(Color.white);
		button7.setBackground(Color.red);
		button8.setBackground(Color.green);
		button9.setBackground(Color.cyan); //buttonStop.setLayout(new borderLayout());
		//button1.setBounds(5,5,5,5);
		

		
		

		JPanel pannello = new JPanel(new GridLayout(3,3)); // crea un pannello!

		pannello.add(button1); // aggiunge al pannello i bottoni!
		pannello.add(button2);
		pannello.add(button3);
		pannello.add(button4);
		pannello.add(button5);
		pannello.add(button6);
		pannello.add(button7);
		pannello.add(button8);
		pannello.add(button9);	
		
		

		frame.add(pannello);
		frame.pack();
		frame.setVisible(true);
		

	}

	
}
Spiego alcune cose che magari potrebbero sembrarvi incomprensibili
di librerie ne ho importate varie perchè ero nel dubbio!
Se provate l'output a me viene una tab 3x3 con i vari bottoni colorati però non riesco ad andare oltre!
L'audio che per adesso non mi interessa... non riesco però ad applicare l'immagine ad un tasto!Come si fa? ci sono formati predefiniti? va bene se metto le icone nel workspace?
Poi non riesco a dimensionare i vari componenti, cioè: mi da una dimensione di default per la finestra dell'output che posso resizare ma non riesco ad impostarne una dim a mia volontà( lo stesso vale per i bottoni) e poi non riesco ad associare l'immagine che voglio al bottone!

Grazie mille!
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2011, 10:51   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ciao Solido, quanto entusiasmo!
Frena un attimo, se per te è tutto nuovo; stai cercando di assorbire molti concetti tutti insieme.

Forse non è la risposta che ti aspettavi, però quando uno si cimenta per la prima volta con AWT/Swing è meglio se lo fa dopo essersi letto qualcosa circa gli aspetti basilari della sua architettura.

Fortunatamente c'è un ottimo tutorial qui sul forum al riguardo, ti consiglio di cominciare con questo: Swing Espresso
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2011, 23:14   #3
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ciao Solido, quanto entusiasmo!
Frena un attimo, se per te è tutto nuovo; stai cercando di assorbire molti concetti tutti insieme.

Forse non è la risposta che ti aspettavi, però quando uno si cimenta per la prima volta con AWT/Swing è meglio se lo fa dopo essersi letto qualcosa circa gli aspetti basilari della sua architettura.

Fortunatamente c'è un ottimo tutorial qui sul forum al riguardo, ti consiglio di cominciare con questo: Swing Espresso

Bella lunghetta hehe... piano piano me la leggerò tutta..anzi no ci devo mettere il giusto. Sono andato però alla ricerca di un concetto e in questa guida non mi chiarisce un concetto!
Il mio scopo è quello di assegnare uno sfondo ad ogni bottone e per fare questo, come indica anche la guida, ho usato ImageIcon.
ImageIcon = new ImageIcon( path)
solo che per me il problema è proprio la directory... io le immagine pernsavo di salvarle nel workspace...è una scelta saggia? nel caso lo sia io come piffero devo settare il mio path?
Io avevo messo così:
"C:://Users/Andrea/workspace/Pannello/Pannello_bin/bin/cane.jpeg
ma probabilmente sbaglio! Tra l'altro non capisco come mai non mi prende il \ che sono le barre che ci sono anche in dos... boh!!!
Qualche consiglio?
grazie mille

ps: il formato jpeg va bene?
__________________
Ho concluso felicemente molte trattative su questo forum!

Ultima modifica di Solido : 12-10-2011 alle 23:17.
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2011, 11:05   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Solido Guarda i messaggi
Bella lunghetta hehe... piano piano me la leggerò tutta..anzi no ci devo mettere il giusto.
Lunghetta?
Considera che il testo di riferimento "Java Swing" conta più di 1000 pagine, e tratta solo le basi. Se veramente vuoi programmare c'è da studiare

Quel tutorial è la migliore introduzione che io abbia mai letto su Swing, per sintesi, chiarezza di esposizione, e ordine di trattazione degli argomenti. E tra l'altro è in italiano, più di così...

Comunque l'idea di leggerlo tutto non è sbagliata, anzi. Se ti prendi 3 orette libere lo fai agevolmente.
Comunque anche qui trovi dei riferimenti molto utili:
http://download.oracle.com/javase/tu...ing/index.html
In particolare consulta "Lesson: Using Swing Components", trovi degli howTo molto comodi.

Quote:
Originariamente inviato da Solido Guarda i messaggi
solo che per me il problema è proprio la directory... io le immagine pernsavo di salvarle nel workspace...è una scelta saggia? nel caso lo sia io come piffero devo settare il mio path?
Supponi di avere questo albero di directory per il tuo progetto nel file system:
Codice:
MiaApplicazione
|- build
|- dist
|- src
    |- mioPackageRadice
    |- images
Il tuo package radice(che contiene altri package e sorgenti .java) sta in "src".
Se crei una cartella, diciamo "images", in cui infilare dentro le immagini da caricare come icone per i pulsanti nell'interfaccia grafica, quando verrà eseguita la build del progetto e verrà generato il .jar da distribuire, esso conterrà le immagini.
Potrai fare riferimento a quelle immagini e caricarle a runtime tramite il metodo getResource a cui puoi accedere tramite una qualsiasi classe caricata raggiungibile a partire da mioPackageRadice, in questo modo:
Codice:
// supponiamo di essere in Fattoria.java
// e che Fattoria.java stia nella cartella mioPackageRadice
// di conseguenza la class Fattoria deve stare nel package mioPackageRadice
package mioPackageRadice;

import javax.swing.ImageIcon;
...

public class Fattoria {
    ...

    // da qualche parte, in Fattoria
    ImageIcon loadIcon(String name) {
        URL url= Fattoria.class.getResource("/images/" + name);
        if (url == null) {
            // non ho trovato l'immagine
            return null;
        } else  {
            return new ImageIcon(url);
        }
    }

    // da qualche altra parte...
    // istanzio un bottone con icona:
    Icon icon = loadIcon("smile_icon.png");
    JButton button = (icon != null) ? 
        new JButton("Smile!", icon) : new JButton("Smile!");
}
Quote:
Originariamente inviato da Solido Guarda i messaggi
ps: il formato jpeg va bene?
Sì.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 13-10-2011 alle 11:12.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2011, 23:27   #5
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Potrei risponderti ma non sarebbe giusto. per vari motivi che ora ti elenco:

1) la pappa pronta fà male nel nostro campo
2) quella guida scende come l'acqua
3) preparati a leggere milioni di pagine (ovviamente in inglese), e fidati che sarà un bene. non finirai mai di imparare.

consiglio spassionato...iniziati a leggere anche la guida sul gridbaglayout....ti faranno impazzire i layout in java, ma se usi bene quello, hai salva la vita!!!
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 12-11-2011, 12:36   #6
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
raga ho letto le parti che mi interessavano della guida e qualcosa ho capito...solo che adesso voelvo riscriverla in un formato un pochino migliore facendo quindi uso di array e di for... fin qui tutto bene solo che mi trovo un errore che non riesco a correggere :

Codice:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.Graphics;

import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

public class Fattoria extends JPanel {
	
	JButton[] b= new JButton[9];
	
	private static final long serialVersionUID = 1L;


	public Fattoria()  {
		//super();
		
		Component frame = new JFrame("Fattoria");
		
		((JFrame) frame).setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setBackground(null);
		frame.setPreferredSize(new Dimension(1000, 800));

// Praticamente qui vorrei creare i bottoni e assegnar loro l'img tutta nel solito ciclo

for (int j=1; j<10; j++){
			b[j]= new JButton("button"+j);
			getContentPane().add(b[j]);
			final Image immagine = new ImageIcon("src/immagine"+j+".jpg").getImage();
				public void paintComponent(Graphics g){
				super.paintComponent(g);
				g.drawImage(immagine, 0, 0,getWidth(),getHeight(), null);
			}
			};

solo che mi da errore nell'istruzione : public void paintComponent(Graphics g){
dicendomi che void non è un tipo valido di ritorno poi mi dice che ci sono multiple markers at this line indicandomi le parentesi tonde... boh io ho visto in varie guide e ho visto che è una sintassi standard e non capisco dove sbaglio... da qualche parte si menzionano dei metodi ma nn ci ho capito nulla...
qualcuno mi sa aiutare?
grazie mille
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2011, 15:54   #7
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847

chiedo anche se qualcuno mi consiglia un libro buono per il java possibilmente in italiano.
Ci sto mettendo impegno ma non riesco cmq a entrare a pieno in questo tipo di programmazione
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2011, 16:21   #8
__ZERO_UNO__
Member
 
L'Avatar di __ZERO_UNO__
 
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
Stai definendo una funzione dentro un ciclo e dentro un altra funzione(il costruttore)!!!!!!!

Miglior libro per principianti di Java: Savitch - Absolute Java. Leggilo con calma e attenzione, ne hai bisogno.
__________________

AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB
Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX
Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200
__ZERO_UNO__ è offline   Rispondi citando il messaggio o parte di esso
Old 13-11-2011, 16:30   #9
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
ok grazie...
ma per quanto riguarda il mio programma come dovrei fare?
io correi solo assegnare tramite il for l'immagini a tutti i miei bottoni!
Dove sbaglio?
prima avevo creato un bottone alla volta e le immagini tornavano anche se i suoni associati ai bottoni facevano i capricci...solo che non si poteva vedere quindi avevo deciso di riscriverlo tramite array e ciclo for
__________________
Ho concluso felicemente molte trattative su questo forum!

Ultima modifica di Solido : 13-11-2011 alle 16:34.
Solido è offline   Rispondi citando il messaggio o parte di esso
Old 14-11-2011, 18:54   #10
Solido
Senior Member
 
L'Avatar di Solido
 
Iscritto dal: Jan 2004
Città: Figline(FI)
Messaggi: 5847
ho risolto così:
Codice:
import java.awt.Component;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

public class Fattoria {

	
	private JFrame frame;
	private JPanel pannello;
    JButton[] b = new JButton[10];

	public Fattoria()  {
		
		frame = new JFrame("Fattoria");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setBackground(null);
		frame.setPreferredSize(new Dimension(1000, 800));
		
		pannello = new JPanel(new GridLayout(3,3)); // crea un pannello!


		for (int j = 1; j < 10; j++){
			//Toolkit tk= Toolkit.getDefaultToolkit();
			
		        final Image immagine = new ImageIcon("src/immagine/" + j +".jpg").getImage();
 
			    b[j]= new JButton(){
				
				private static final long serialVersionUID = 1L;

				protected void paintComponent(Graphics g){
					
                       super.paintComponent(g);	
                       g.drawImage(immagine, 0, 0,getWidth(),getHeight(), null);
			       }
			};
			
			pannello.add(b[j]);// vengono aggiunti i bottoni al pannello dentro il jframe

		}
	
	        frame.add(pannello);
	        frame.pack();
	        frame.setVisible(true);
		
		}
	

	}

ora mi manca di associarci i suoni... ma nn riesco a trovare nulla a riguardo di esauriente... avete qualche consiglio?
ah: c'è qualche altro metodo per prendere il pat di un'immagine o di un suono?
grazie mille!!!
__________________
Ho concluso felicemente molte trattative su questo forum!
Solido è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Apple in piena tempesta: anche il boss d...
Due GeForce GTX 580 in SLI: l'insospetta...
TSMC dà i numeri: dal processo N7...
La ricarica wireless dei Samsung Galaxy ...
Stop ai social per gli Under 16: l'Austr...
Google svela i videogiochi più ce...
TikTok lancia il nuovo feed con contenut...
Amazon aggiorna gli sconti e si prepara ...
GeForce NOW: 50% di sconto e 30 nuovi gi...
Insta360 Ace Pro 2 in offerta: disponibi...
Roborock Saros 10R a 909€ invece di 1.39...
Solo oggi due monitor Acer a prezzi assu...
FRITZ!Box in forte sconto su Amazon: mod...
Apple + Samsung = monopolio totale nel Q...
6 TV 4K in super sconto su Amazon, anche...
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:32.


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