Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-05-2009, 19:13   #1
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
[Java] posizionare componenti senza layout manager

devo fare un piccolo progetto per la scuola. Posso fare qualsiasi cosa l'importante è che usi le socket. Siccome pensavo di farlo con interfaccia grafica sto facendo un po' di prove. faccio setLayout(null) nel JFrame però se cerco di posizionare i componenti con setBounds() non c'è verso che si spostino.

qualcuno mi sa aiutare?
al limite, c'è qualche layoutManager semplice da usare, adatto anche per progetti piccoli?

grazie
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2009, 20:15   #2
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1060
io di solito inserisco all'interno del JFrame un JPanel impostato con setLayout(null)

esempio:
Codice:
        /* mainPanel */
        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(null);


        /* JFrame */
        /*....
        */
        this.getContentPane().add(mainPanel);
e poi posiziono i vari componenti con setBounds all'interno del panel
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2009, 20:42   #3
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
guarda io ho questo codice

Codice:
package socketproject;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;

public class Gui extends JFrame
{
	private static final long serialVersionUID = 4667623015432940473L;
	private JPanel panel;
	private ButtonDemo button;
	
	public Gui()
	{
		try 
	    {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
	    } 
		catch (Exception e) 
		{
			System.err.println( "Errore di creazione Look&Feel" );
		}
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(600, 400);
		this.setLocation(300, 200);
		this.setTitle("Provvisorio");
		this.setLayout(null);
		
		panel = new JPanel();
		panel.setBackground(Color.LIGHT_GRAY);
		
		button = new ButtonDemo("cliccami");
		button.addActionListener(button);
		
		panel.add(button);
		
		this.add(panel);
		this.setContentPane(panel);
	}
}
visualizza il bottone ma se provo a spostarlo non c'è verso.. ho provato ad adattarlo al tuo ma niente, deve esserci una cosa che esclude un'altra.. addirittura nemmeno lo visualizza il bottone.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2009, 20:59   #4
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1060
modifica in questo modo:

Codice:
package socketproject;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;

public class Gui extends JFrame
{
	private static final long serialVersionUID = 4667623015432940473L;
	private JPanel panel;
	private ButtonDemo button;
	
	public Gui()
	{
		try 
	    {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
	    } 
		catch (Exception e) 
		{
			System.err.println( "Errore di creazione Look&Feel" );
		}
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(600, 400);
		this.setLocation(300, 200);
		this.setTitle("Provvisorio");
		//this.setLayout(null); //Va fatto sul panel
		
		panel = new JPanel();
		panel.setBackground(Color.LIGHT_GRAY);
		panel.setLayout(null);
		
		button = new ButtonDemo("cliccami");
		button.setBounds(...);                           //Da sistemare
		button.addActionListener(button);
		
		this.getContentPane().add(panel);

		panel.add(button);
	}
}
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2009, 21:07   #5
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
guarda, fatto così:

Codice:
package socketproject;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;

public class Gui extends JFrame
{
	private static final long serialVersionUID = 4667623015432940473L;
	private JPanel panel;
	private ButtonDemo button;
	
	public Gui()
	{
		try 
	    {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
	    } 
		catch (Exception e) 
		{
			System.err.println( "Errore di creazione Look&Feel" );
		}
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(600, 400);
		this.setLocation(300, 200);
		this.setTitle("Provvisorio");
		
		panel = new JPanel();
		panel.setLayout(null);
		panel.setBackground(Color.LIGHT_GRAY);
		 
		button = new ButtonDemo("cliccami");
		button.setBounds(400, 300, button.getWidth(), button.getHeight());
		button.addActionListener(button);
		
		this.getContentPane().add(panel);
		
		panel.add(button);
	}
}
ma non si vede il bottone.. e una cosa, nel setBounds per x e y, devo tenere conto di dove è collocata la finestra?
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2009, 21:21   #6
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1060
qui devi passare le coordinate x, y (che non dipendono dalla posizione della finestra) e la dimensione del pulsante width e height

Codice:
button.setBounds(400, 300, button.getWidth(), button.getHeight());
ora non conosco la classe ButtonDemo e quindi non so cosa ritornano i metodi getWidth() e getHeight() (probabilmente ritornano 0 se il pulsante non si vede..) infatti se fai:

Codice:
button.setBounds(400, 300, 80, 30);
il pulsante viene visualizzato correttamente (avendolo però precedentemente dichiarato come JButton, visto che non ho la classe ButtonDemo che usi tu)
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2009, 21:48   #7
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
hai ragione
semplicemente ButtonDemo è una mia classe che deriva da JButton. io mettevo button.width e button.height perchè pensavo non avesse senso dare una dimensione e un'altezza quando comunque è fissa..

grazie comunque
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2009, 22:14   #8
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Usa un IDE se vuoi realizzare un'interfaccia grafica e non hai il tempo di studiarne il layout.

Impostare il layout a null può sembrare una soluzione ma complica enormemente le cose.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 11:47   #9
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Usa un IDE se vuoi realizzare un'interfaccia grafica e non hai il tempo di studiarne il layout.

Impostare il layout a null può sembrare una soluzione ma complica enormemente le cose.
il problema è che è un progetto scolastico. e il prof lo gradirebbe tutto fatto a scrittura di codice.
ndakota è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Datacenter AI, in Cina debutta l'aliment...
Full frame? Può aspettare: OM System seg...
Neodimio, ferro e boro dai dischi rigidi...
GPT-6 Astra puó leggere e correggere i p...
Lyncast X5PRO MAX, un bel videoproiettor...
Robot aspirapolvere, prezzi folli su Ama...
Anthropic: l'IA può far avanzare ...
JBL Quantum TWS, prezzo bassissimo su Am...
SteamOS su Mac Apple Silicon: giochi fun...
Erano finiti, Amazon ha fatto scorta e i...
Scope elettriche Tineco e DREAME, prezzi...
Apple chiude il trimestre fiscale con 11...
Qualcomm HBC supera la validazione in la...
Tachyum avvia la procedura di fallimento...
La sonda spaziale NASA Lucy ha raggiunto...
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: 09:55.


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