Newsgroup: it.comp.java
Titolo: Nimbus Look & Feel

Salve,
 
sono un principiante, da qualche giorno ho iniziato a programmare in
Java e avrei bisogno di aiuto riguardo a Swing.
 
Utilizzo il Look & Feel Nimbus.
Sapete spiegarmi come si ottiene dei Titoli per i JPanel come
nell'applicazione SwingSet3 (
http://download.java.net/javadesktop/
 
swingset3/).
Per essere più precisi nella seguente immagine:
http://www.linux265.com/blog/upload/swingset3.png
 
vorrei ottenere dei titoli come quello dove compare "Advanced JTable
Demo".
 
Riuscite ad aiutarmi!?
 
Grazie,
Alessio.

 Riuscite ad aiutarmi!?
Quel titolo non e' in un JPanel, ma nella JFrame che ha il metodo 
setTitle() oppure l'apposito costruttore.
Per mettere un titolo ad un JPanel dovresti utilizzare un Border, ad 
esempio un TitledBorder con o senza cornice.
 


Io vorrei ottenere esattamente quell'effetto.
Potresti spiegarmi a grandi linee come procedere?
Ho provato ad utilizzare il Border con titolo del JPanel ma non mi piace molto.

 Ho provato ad utilizzare il Border con titolo del JPanel ma non mi piace molto.
Quell'effetto si ottiene col metodo setTitle dell'oggetto JFrame.


Ho provato, ma con il setTitle dell'oggetto frame mi cambia il titolo della finestra.

il 18.06.2012 17:01, Scrive 
alessio....@gmail.com
 94506972:

E' questo che ho capito. Spiegati meglio, che sono un po' duro! :-))

 E' questo che ho capito. Spiegati meglio, che sono un po' duro! :-))
 
secondo me intende l'effetto fade del titolo della tabella che si vede 
nell'immagine.
Mi sa che ci vuole un Component custom o sbaglio?
 
il mio cent.
 
U.

il 18.06.2012 17:54, Scrive Umberto Carrara 94500732:

Bisognerebbe guardare il sorgente, a occhio pero' mi sembra un 
JInternalFrame. Nel qual caso anche questo ha il metodo setTitle, o il 
costruttore col titolo.


Credo che l'OP intenda sapere come si ottiene l'effetto sfumato a
gradiente...  un paio di esempi:
 
===========================================================================
import javax.swing.*;
import java.awt.*;
 
public class PannelloConGradiente extends JFrame
{
    public PannelloConGradiente()
    {
        JTextPane textPane = new JTextPane()
        {
            @Override
            protected void paintComponent( Graphics g )
            {
                int panelHeight = getHeight();
                int panelWidth = getWidth();
 
             // Gradiente in senso verticale
             //   Paint paint = new GradientPaint(0, 0, Color.gray,  0,
panelHeight, Color.white, true);
 
             // Gradiente in senso orizzontale
                Paint paint = new GradientPaint( 0, 0, Color.gray,
panelWidth, 0, Color.white, true );
 
                if( g instanceof Graphics2D )
                {
                    Graphics2D graphics2D = ( Graphics2D ) g;
                    graphics2D.setPaint( paint );
                    graphics2D.fillRect( 0, 0, panelWidth, panelHeight );
                }
 
                super.paintComponent( g );
            }
        };
 
        textPane.setOpaque( false );
        StringBuilder sb = new StringBuilder();
        for( int i = 0; i < 50; i++ )
        {
            sb.append( "La piccola volpe bruna saltò sul pigro cane. " );
        }
        textPane.setText( sb.toString() );
 
        add( new JScrollPane( textPane ) );
        setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
        setSize( 400, 400 );
        setLocationRelativeTo( null );
        setVisible( true );
    }
 
    public static void main( String[] args )
    {
        // JFrame.setDefaultLookAndFeelDecorated( true );
        // JDialog.setDefaultLookAndFeelDecorated( true );
 
        new PannelloConGradiente();
    }
}
---------------------------------------------------------------------------
 
Altro esempio
 
---------------------------------------------------------------------------
 
import javax.swing.*;
import java.awt.*;
 
public class GradientPanelTest extends JFrame
{
    public GradientPanelTest()
    {
        super( "Test Pannello con Gradiente ");
 
        GradientPanel gp = new GradientPanel(
GradientPanel.WIZARD_COLOR_START, GradientPanel.WIZARD_COLOR_END );
        JLabel label = new JLabel(  );
 
        label.setText( "Titolo del Pannello" );
        label.setFont( new Font( "monospaced", Font.ITALIC + Font.BOLD,
32  ) );
        label.setForeground( Color.WHITE  );
 
        gp.add( label );
        add( gp );
        setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
        setSize( 700, 100 );
        setLocationRelativeTo( null );
        setVisible( true );
    }
 
    public static void main(String[] args)
    {
        JFrame.setDefaultLookAndFeelDecorated( true );
        JDialog.setDefaultLookAndFeelDecorated( true );
 
        new GradientPanelTest();
    }
}
 
 
import javax.swing.*;
import java.awt.*;
 
public class GradientPanel extends JPanel
{
 
    private Color startColor;
    private Color endColor;
 
    public static final Color WIZARD_COLOR_START  = new Color( 0x012080 );
    public static final Color WIZARD_COLOR_END    = new Color( -12714257 );
 
    public GradientPanel( Color startColor, Color endColor )
    {
        super();
        this.startColor = startColor;
        this.endColor = endColor;
    }
 
    @Override protected void paintComponent( Graphics g )
    {
        super.paintComponent( g );
        int panelHeight = getHeight();
        int panelWidth = getWidth();
        // GradientPaint gradientPaint = new GradientPaint( panelWidth /
2, 0, startColor, panelWidth / 2, panelHeight, endColor );
        GradientPaint gradientPaint = new GradientPaint( 0, 0,
startColor, panelWidth, 0, endColor );
 
        if( g instanceof Graphics2D )
        {
            Graphics2D graphics2D = ( Graphics2D ) g;
            graphics2D.setPaint( gradientPaint );
            graphics2D.fillRect( 0, 0, panelWidth, panelHeight );
        }
    }
}
===========================================================================
 
-- 
sin²+cos²=1
You can say this any time during a proof and it will always be relevant.
In fact, this is just Pythagoras' Theorem, written in a more impressive
way. This being the first and most favourite of all theorems, you get
bonus point just for sentimental value.
 
 

 gradiente...
Dici? Tutto puo' essere. Cio' che mi ha sviato e' stata la frase dell'op 
"Sapete spiegarmi come si ottiene dei Titoli per i JPanel", che, 
interpretando lo scarso italiano, mi ha portato a pensare alla title-bar.
Fatto sta' che se si spiegasse meglio...


Onestamente... ero del tuo parere e per almeno due:
a) l'immagine non aiuta... l'ho iniziato a sospettare che mi stavo
perdendo qualcosa scaricando il sorgente dal sito indicato che non è in
realtà uguale a quello suggerito...
b) lo scarnissimo testo di commento che non spiega molto...
 
poi tra quanto sospettavo e la dritta di Umberto Carrara ho immaginato
che il busillis stesse da queste parti...  ma intendiamoci solo l'OP
potrebbe veramente dirci cosa intendeva


Grazie a tutti per l'interesse rispetto alla mia curiosità!
Felce e Mirtillo ha capito quello che volevo sapere.
Con le sue indicazioni ho capito come applicare un gradiente.
Potete spiegarmi anche come mettere più JPanel uno dentro l'altro!?
Sicuramente mi sono spiegato male anche perché ripeto, la mia familiarità con Java è veramente ai minimi termini.
Quindi per capire meglio vi allego questa immagine:
http://www.mediafire.com/?eab451jv7jz6t1d
 
 
Grazie di nuovo,
Alessio.

 Potete spiegarmi anche come mettere più JPanel uno dentro l'altro!?
dati 3 JPanel:
JPanel a = new JPanel(), b = new JPanel(), c = new JPanel();
 
se vuoi mettere b e c dentro ad a, basta:
 
a.add(b);
a.add(c);
 
Il problema nasce quando vuoi che il risultato non sia "a casaccio", a 
questo riguardo ti consiglio di guardarti i LayoutManager ed i relativi 
constraint.
 
 

Grazie di nuovo per l'aiuto!
Cercherò informazioni su internet.
