|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
[Java] sfondo sfumato
Ciao a tutti
vorrei avere uno sfondo sfumato, quale funzione devo utilizzare? setBackground() mi da la possibilità di sfumare o devo utilizzare un'altra funzione? in rete ho visto tale funzione setBackground(new Color(20, 20, 64) (i numeri li ho messi a caso) ma non funziona ugualmente. Grazie in anticipo |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
Quel metodo ti imposta lo sfondo col colore che vuoi (non sfumato).
Sinceramente non credo esista un metodo gia pronto che ti permetta di sfumare lo sfondo. Potresti provare ad usare un immagine come sfondo (e quindi potrai metterci un immagine che sfuma come ti pare) oppure colorare il pannello di sfondo (meglio se ne metti uno apposito) riga per riga cambiando il colore ![]()
__________________
iMac 27" 5K |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
ok, farò come mi hai consigliato, mi creo un immagine-sfondo
![]() ho un altro problema! Non riesco a visualizzare un immagine: ...... Image grafico = Toolkit.getDefaultToolkit().getImage ( "grafico.gif" ); tab.add("Tab 1",grafico); e mi da errore all' "add()" Multiple markers at this line - The method add(String, Component) in the type JTabbedPane is not applicable for the arguments (String, Image) - The method add(String, Component) in the type JTabbedPane is not applicable for the arguments (String, Image, JButton) come faccio caricare allora l'immagine nel tab? |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Poresti usare la tua Image per creare una javax.swing.ImageIcon da passare a sua volta come parametro al costruttore di una javax.swing.JLabel: quest'ultima essendo un Component può essere passata come parametro al metodo add della tua JTabbedPane.
__________________
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) |
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
grazie mille per tutto
![]() ImageIcon img=new ImageIcon("C:\\grafico.gif"); JLabel img2 = new JLabel(img); tab.add("Tab 1", img2 ); riporto lo script corretto per chi ne ha bisogno ![]() dato che siamo in tema, per caricarne due di immagini? uno sotto l'altra. Ovviamente non posso passare due parametri image all' add(). Devo creare un vettore? e che tipo di vettore? scusate le mille domande, ma la grafica di java la sto imparando solo ora Ultima modifica di jarno : 18-02-2009 alle 18:06. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
ti crei due label con immagini diverse, le metti in un JPanel con layout appropriato e metti il JPanel nel tuo JTabbedPane esattamente come gia fai per la label
![]()
__________________
iMac 27" 5K |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
penso che in teoria dovrei fare una cosa del genere:
............. ImageIcon img=new ImageIcon("C:\\grafico.gif"); JLabel img2 = new JLabel(img); ImageIcon img3=new ImageIcon("C:\\grafico2.png"); JLabel img4 = new JLabel(img3); JPanel insieme; insieme.addLayoutComponent("figura1",img2); insieme.addLayoutComponent("figura1",img4); tabbedPane.addTab("Tab1", insieme); ma mi da errore a quasta righe: insieme.addLayoutComponent("figura1",img2); insieme.addLayoutComponent("figura1",img4); The method addLayoutComponent(String, JLabel) is undefined for the type JPanel come dovrei fare? (intanto continuo a ringraziarvi della disponibilità ![]() |
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
ho continuato così
ImageIcon img=new ImageIcon("C:\\grafico.gif"); JLabel img2 = new JLabel(img); ImageIcon img3=new ImageIcon("C:\\grafico2.png"); JLabel img4 = new JLabel(img3); LayoutManager insieme = null; insieme.addLayoutComponent("figura1",img2); insieme.addLayoutComponent("figura2",img4); JPanel insieme2= new JPanel(insieme); JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.addTab("Temperature", insieme2); ma purtroppo mi da errore alla variabile insieme, dicendomi che: The local variable insieme may not have been initialized allora ho fatto: LayoutManager insieme=null; non mi visualizza più errore, ma quando lo lancio la finestra è completamente vuota Ultima modifica di jarno : 18-02-2009 alle 20:50. |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
A intuito ci sei quasi. Devi usare un LayoutManager ma non propriamente in quel modo. Le GUI Java sono fatte a matrioska. Infili componenti dentro a contenitori che a loro volta sono componenti e possono essere infilati in contenitori eccetera eccetera.
Il LayoutManager dice "dove" fa a finire un componente aggiunto ad un contenitore. Ogni contenitore ha il suo LayoutManager. Per mettere un'immagine sotto ad un altra in una scheda di un JTabbedPane posso prendere un contenitore generico, JPanel, dirgli di usare un LayoutManager che mette una cosa sopra all'altra, aggiungere le due immagini e aggiungere il JPanel come scheda del JTabbedPane. Ad esempio: LayoutManager layMan = new GridLayout(2, 1); JPanel contenitoreImmagini = new JPanel(); contenitoreImmagini.setLayout(layMan); contenitoreImmagini.add(img2); contenitoreImmagini.add(img4); JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.addTab("temperature", contenitoreImmagini); Quanto allo sfondo è più efficace colorare lo sfondo del pannello. Fortunatamente non occorre farlo riga per riga. Per colorare un pannello devi sovrascrivere il suo metodo protected void paintComponent(Graphics graphics). Esempio: se questo è un pannello normale JPanel panel = new JPanel(); questo è un pannello con lo sfondo sfumato da bianco (in alto) a nero (in basso) Codice:
JPane panel = new JPanel() { protected void paintComponent(Graphics graphics) { super.paintComponent(graphics); Graphics2D g = (Graphics2D)graphics; GradientPaint gradient = new GradientPaint(0, 0, Color.WHITE, 0, getHeight() - 1, Color.BLACK); g.setPaint(gradient); g.fillRect(0, 0, getWidth(), getHeight()); } };
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
come faccio a richiamare panel nel main?
pensavo di scrivere una cosa del genere background(panel); ma giustamente mi da errore in quanto public Background()Constructs a Background node with default parameters. The default values are as follows: color : black (0,0,0) image : null geometry : null image scale mode : SCALE_NONE application bounds : null application bounding leaf : null come dovrei fare? (in questi giorni sto imparando tante di quelle cose che poi nelle cose semplici mi perdo XD ) Ultima modifica di jarno : 20-02-2009 alle 10:21. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quel Background lì sembra un javax.media.Background, di Java3D.
Comunque non è quello. "panel" è un JPanel tale quale agli altri a parte avere lo sfondo sfumato. Non si tratta tanto <<di richiamarlo nel main>>, locuzione un po' ambigua, quanto di usarlo come un qualsiasi altro contenitore: ci infili dentro qualcosa e poi lo aggiungi a sua volta ad una finestra.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:02.