Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
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.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-04-2010, 11:47   #1
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
[Java] Visibilità Bottoni in JFrame

Ho creato un frame, tramite Toolkit ho creato un IMG con immagine. l'ho caricata nel Container come immagine di sfondo. Dopo ho creato dei bottoni, il problema è che l'immagine prevale sui bottoni, nel senso che i bottoni diventano visibili SOLO quando ci passo sopra con il mouse, altrimenti restano invisibili. Dovrei in qualche modo mettere in risalto i bottoni, ma non trovo il modo.
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 12:46   #2
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Ogni tanto capita anche a me qualcosa del genere, ma credo sia dovuto a dei problemi sulla JVM.
Non faresti prima a mettere quei bottoni su un altro pannello separato dall'immagine?
Ad esempio: Immagine al centro di un JPanel con BorderLayout, bottoni all'interno di un JPanel a SUD del JPanel sottostante.
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 12:48   #3
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da fbcyborg Guarda i messaggi
Ogni tanto capita anche a me qualcosa del genere, ma credo sia dovuto a dei problemi sulla JVM.
Non faresti prima a mettere quei bottoni su un altro pannello separato dall'immagine?
Ad esempio: Immagine al centro di un JPanel con BorderLayout, bottoni all'interno di un JPanel a SUD del JPanel sottostante.
Ci ho gia provato, ma dato che non sono esperto con Java, non ci sono riuscito...
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 13:05   #4
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Scusa, posta il codice e vediamo se riusciamo ad aiutarti.
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:06   #5
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Codice:
public static void main(String[] args) throws IOException {
    	Image img = Toolkit.getDefaultToolkit().getImage("bg.jpg");
    	JLabel label = new JLabel(new ImageIcon(img));
        JFrame f = new JFrame();
        Container cp = f.getContentPane();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        cp.add(label);
        f.pack();
        f.setLocation(200,200);
        f.setVisible(true);
        f.setTitle("PDF Parser v1.0");
        f.setLayout(null);
        JButton jbOpen = new JButton("Open");
        JButton jbPreView = new JButton("Preview");
        JButton jbParse = new JButton("Parse");
        JButton jbMap = new JButton("Map");
        JButton jbClose = new JButton("Close");
        jbOpen.setBounds(new Rectangle(30, 37, 75, 30));
        jbPreView.setBounds(new Rectangle(106, 37, 75, 30));
        jbParse.setBounds(new Rectangle(182, 37, 75, 30));
        jbMap.setBounds(new Rectangle(258, 37, 75, 30));
        jbClose.setBounds(new Rectangle(334, 37, 75, 30));
        
        f.add(jbOpen);
        f.add(jbPreView);
        f.add(jbParse);
        f.add(jbMap);
        f.add(jbClose);
       }
Questo è il codice. Io avrei voluto farlo così (questo è fatto con photoshop):
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:12   #6
*andre*
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 1071
che cosa intendi caricata nel container?

una soluzione è disegnare l'immagine sullo sfondo in questo modo:
Codice:
public class MyPanel extends JPanel {
	Image im;
	
	public MyPanel() throws MalformedURLException{
		add(new JButton("1"));
		add(new JButton("2"));
		im=new ImageIcon(new URL("file:C:/lol.jpg")).getImage();
	}
	
	protected void paintComponent(Graphics g){
		g.drawImage(im, 0, 0, null);
	}
}
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77
*andre* è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:18   #7
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Qualcosa del genere pensi ti possa andar bene?
Codice:
import java.awt.BorderLayout;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.JButton;

public class Pannello extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel jPanel = null;
	private JButton jButton = null;
	private JButton jButton1 = null;
	private JButton jButton2 = null;
	private JButton jButton3 = null;
	private JButton jButton4 = null;

	/**
	 * This is the default constructor
	 */
	public Pannello() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(435, 361);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setContentPane(getJContentPane());
		this.setTitle("PDF Parser v1.0");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			Image img = Toolkit.getDefaultToolkit().getImage("bg.jpg");
	    	JLabel label = new JLabel(new ImageIcon(img));
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getJPanel(), BorderLayout.SOUTH);
			jContentPane.add(label,BorderLayout.CENTER);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jPanel	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getJPanel() {
		if (jPanel == null) {
			FlowLayout flowLayout = new FlowLayout();
			flowLayout.setAlignment(FlowLayout.CENTER);
			jPanel = new JPanel();
			jPanel.setLayout(flowLayout);
			jPanel.add(getJButton(), null);
			jPanel.add(getJButton1(), null);
			jPanel.add(getJButton2(), null);
			jPanel.add(getJButton3(), null);
			jPanel.add(getJButton4(), null);
		}
		return jPanel;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setText("Open");
		}
		return jButton;
	}

	/**
	 * This method initializes jButton1	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton1() {
		if (jButton1 == null) {
			jButton1 = new JButton();
			jButton1.setText("Preview");
		}
		return jButton1;
	}

	/**
	 * This method initializes jButton2	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton2() {
		if (jButton2 == null) {
			jButton2 = new JButton();
			jButton2.setText("Parse");
		}
		return jButton2;
	}

	/**
	 * This method initializes jButton3	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton3() {
		if (jButton3 == null) {
			jButton3 = new JButton();
			jButton3.setText("Map");
		}
		return jButton3;
	}

	/**
	 * This method initializes jButton4	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton4() {
		if (jButton4 == null) {
			jButton4 = new JButton();
			jButton4.setText("Close");
		}
		return jButton4;
	}
	
	public static void main(String[] args){
		Pannello pan = new Pannello();
		pan.setVisible(true);
	}

}  //  @jve:decl-index=0:visual-constraint="10,10"
C'ho messo 5 minuti con l'aiuto di Eclipse!
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:23   #8
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da fbcyborg Guarda i messaggi
Qualcosa del genere pensi ti possa andar bene?
Ti ringrazio per l'interesse, però non va bene. Come hai scritto tu, mi mette l'immagine e sotto i bottoni e si vede il grigio del frame. Io volevo lo sfondo tutto coperto dall'immagine e i bottoni sopra.
Penso che come avevo scritto io vada bene, ma sti cavolo di bottoni dovrebbero stare in risalto.
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:25   #9
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Il problema è che per mettere un'immagine in un JPanel bisogna passare per una JLabel, ma come fai poi a mettere i bottoni nella JLabel?
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:29   #10
*andre*
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 1071
Quote:
Originariamente inviato da fbcyborg Guarda i messaggi
Qualcosa del genere pensi ti possa andar bene?
C'ho messo 5 minuti con l'aiuto di Eclipse!
se vuole i pulsanti che stanno sopra lo sfondo deve disegnare l'immagine di sfondo a mano, poi ci pensa il metodo repaint() (chiamato dalla jvm quando serve) a disegnare a schermo quello che hai messo nel paintComponent(Graphics) e poi gli elementi swing
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77
*andre* è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:30   #11
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Ah, allora OK!
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:33   #12
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da *andre* Guarda i messaggi
se vuole i pulsanti che stanno sopra lo sfondo deve disegnare l'immagine di sfondo a mano, poi ci pensa il metodo repaint() (chiamato dalla jvm quando serve) a disegnare a schermo quello che hai messo nel paintComponent(Graphics) e poi gli elementi swing
Passo, troppo complicato per il mio livello.
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:35   #13
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
LOL !!!!!
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:37   #14
*andre*
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 1071
Quote:
Originariamente inviato da Emaborsa Guarda i messaggi
Passo, troppo complicato per il mio livello.
non sei arrivato a estendere una classe?
__________________
Affari: ariakasneverborne, PanCar, Luk@°°°, Fabio310, kintaro oe, krike, fabry180384, dariox am2, chiadoz, windsofchange, dado1979, Rudyduca, aleforumista, Sheva77
*andre* è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:41   #15
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da *andre* Guarda i messaggi
non sei arrivato a estendere una classe?
Si, ad estendere si. è che del paint e repaint dei graphics non ho mai avuto a che fare.
....non capisco come faccia a funzionare questa che avete scritto:
Codice:
public class MyPanel extends JPanel {
	Image im;
	
	public MyPanel() throws MalformedURLException{
		add(new JButton("1"));
		add(new JButton("2"));
		im=new ImageIcon(new URL("file:C:/lol.jpg")).getImage();
	}
	
	protected void paintComponent(Graphics g){
		g.drawImage(im, 0, 0, null);
	}
}
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 18:45   #16
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Sembra strano, ma ste classi che usano questi metodi sono fatte e si usano così! :|
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 19:14   #17
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da fbcyborg Guarda i messaggi
Il problema è che per mettere un'immagine in un JPanel bisogna passare per una JLabel, ma come fai poi a mettere i bottoni nella JLabel?
JLable è un container.

Codice:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Main implements Runnable {

    public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Main());
    }

    public void run() {
        URL url;
        try {
            url =new URL("http://eccstyle.com/blog/wp-content/uploads/2009/07/purple_lotus_flower.jpg");
        } catch(Exception ex) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "", ex);
            return;
        }
        JLabel label = new JLabel(new ImageIcon(url));
        label.setLayout(new BorderLayout());
        JButton ok = new JButton("ok");
        JButton cancel = new JButton("cancel");
        JPanel buttons = new JPanel(new FlowLayout(FlowLayout.CENTER));
        buttons.setOpaque(false);
        buttons.add(ok);
        buttons.add(cancel);
        label.add(buttons, BorderLayout.SOUTH);
        JFrame window = new JFrame("test");
        window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        window.add(label);
        window.pack();
        window.setVisible(true);
    }
}
Mai usare setLayout(null), mai usare setBounds a meno che tu non stia scrivendo un LayoutManager.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 19:26   #18
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Mai usare setLayout(null), mai usare setBounds.
...perchè dici questo?
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 19:27   #19
fbcyborg
Senior Member
 
L'Avatar di fbcyborg
 
Iscritto dal: Jan 2004
Città: ROMA
Messaggi: 2055
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
JLable è un container.
Ooops...
__________________
^ThE CyBoRg^
fbcyborg è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2010, 20:50   #20
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da Emaborsa Guarda i messaggi
...perchè dici questo?
setBounds impone ad un componente di occupare una certa regione di spazio. Il problema è che le dimensioni di un componente possono dipendere e in genere dipendono da valori noti solo al momento dell'esecuzione. Tipicamente sono i font e i bordi a variare.

Un pulsante con un certo font potrebbe essere correttamente mostrato nel caso in cui il suo font abbia dimensione 10 ma non nel caso in cui il font abbia dimensione 12 (o a parità di dimensione cambi la famiglia). Oppure un certo look and feel potrebbe imporre al pulsante un bordo abbastanza spesso da non consentire la proiezione dell'etichetta (ad esempio nimbus ha dei bordi piuttosto consistenti mentre ocean li ha relativamente piccoli).

Tutte queste variazioni sono automaticamente considerate dai LayoutManager perchè il framework (AWT/Swing) li fa entrare in gioco quando è noto il valore di tutte quelle variabili da cui dipende la corretta dimensione di un certo componente (cioè dopo la connessione del componente ad un ramo dell'albero di proiezione collegato ad una finestra realizzata).

Se scarti i LayoutManager il tuo programma cessa di essere portabile, non solo da sistema operativo a sistema operativo ma anche tra sessioni di esecuzione diverse - perchè è sempre possibile variare il look and feel all'avvio di un programma.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
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...
La Camera USA presenta il conto: i data ...
Non solo EV, ma anche IA: Panasonic inau...
iPhone Duo, il debutto del pieghevole di...
Atlas 960E SuperPoD, la risposta di Huaw...
IA militare e nucleare: esperti USA e ci...
Dieci mini-reattori nucleari in Europa d...
CONTROL Resonant su PC: Path Tracing, Ra...
ColorOS 17 arriva su circa 90 dispositiv...
GTA VI, il multiplayer potrebbe debuttar...
Aggiornamento KB5002914 rompe Excel: ecc...
Processo Huawei a Brooklyn: l'FBI mostra...
WhatsApp introduce nuovi temi per le cha...
NVIDIA, Google e Emerald AI uniscono le ...
iPhone 18 Pro Max, il test sulla vapor c...
Fine estate in giardino: le proposte sco...
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: 20:19.


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