Newsgroup: it.comp.java
Titolo: problema con jtabbedpane

Salve a tutti,
partendo dal presupposto che sono agli esordi con Java-_-,
sto cercando di implementare un'interfaccia grafica utilizzando i tab
in modo che in ogni pagina mi vengano visualizzate cose diverse(nel
prima JButton e JLabel, nel secondo principalmente JLabel, nel terzo
devo decidere^_-). Invece di creare un'unico file che sarebbe anche
"scomodo" da vedersi data la lunghezza vorrei creare 4 file java: 3 per
le pagine e uno principale dal quale richiamo le altre(quindi avrò nei
3 file le 3 pagine già belle pronte e solo da aggiungere
all'interfaccia finale).
io sono partito utilizzando come base questo codice, ma quando lo vado
a dividere poi nn riesco a richiamare dal file principale le 3 classi
che compongono le 3 pagine:
import java.awt.*;
import javax.swing.*;
class TabbedPaneExample
		extends 	JFrame
{
	private		JTabbedPane tabbedPane;
	private		JPanel		panel1;
	private		JPanel		panel2;
	private		JPanel		panel3;
	public TabbedPaneExample()
	{
		// NOTE: to reduce the amount of code in this example, it uses
		// panels with a NULL layout.  This is NOT suitable for
		// production code since it may not display correctly for
		// a look-and-feel.
		setTitle( "Tabbed Pane Application" );
		setSize( 300, 200 );
		setBackground( Color.gray );
		JPanel topPanel = new JPanel();
		topPanel.setLayout( new BorderLayout() );
		getContentPane().add( topPanel );
		// Create the tab pages
		createPage1();
		createPage2();
		createPage3();
		// Create a tabbed pane
		tabbedPane = new JTabbedPane();
		tabbedPane.addTab( "Page 1", panel1 );
		tabbedPane.addTab( "Page 2", panel2 );
		tabbedPane.addTab( "Page 3", panel3 );
		topPanel.add( tabbedPane, BorderLayout.CENTER );
	}
	public void createPage1()
	{
		panel1 = new JPanel();
		panel1.setLayout( null );
		JLabel label1 = new JLabel( "Username:" );
		label1.setBounds( 10, 15, 150, 20 );
		panel1.add( label1 );
		JTextField field = new JTextField();
		field.setBounds( 10, 35, 150, 20 );
		panel1.add( field );
		JLabel label2 = new JLabel( "Password:" );
		label2.setBounds( 10, 60, 150, 20 );
		panel1.add( label2 );
		JPasswordField fieldPass = new JPasswordField();
		fieldPass.setBounds( 10, 80, 150, 20 );
		panel1.add( fieldPass );
	}
	public void createPage2()
	{
		panel2 = new JPanel();
		panel2.setLayout( new BorderLayout() );
		panel2.add( new JButton( "North" ), BorderLayout.NORTH );
		panel2.add( new JButton( "South" ), BorderLayout.SOUTH );
		panel2.add( new JButton( "East" ), BorderLayout.EAST );
		panel2.add( new JButton( "West" ), BorderLayout.WEST );
		panel2.add( new JButton( "Center" ), BorderLayout.CENTER );
	}
	public void createPage3()
	{
		panel3 = new JPanel();
		panel3.setLayout( new GridLayout( 3, 2 ) );
		panel3.add( new JLabel( "Field 1:" ) );
		panel3.add( new TextArea() );
		panel3.add( new JLabel( "Field 2:" ) );
		panel3.add( new TextArea() );
		panel3.add( new JLabel( "Field 3:" ) );
		panel3.add( new TextArea() );
	}
    // Main method to get things started
	public static void main( String args[] )
	{
		// Create an instance of the test application
		TabbedPaneExample mainFrame	= new TabbedPaneExample();
		mainFrame.setVisible( true );
	}
}
Avete qualche suggerimento?
p.s. spero di essermi spiegato bene...

 
Ragiona a oggetti non a file...
poi il fatto che ogni classe ti conviene scriverla in un file è del 
tutto accidentale.
Ognuna delle tua pagine in realtà è un semplice JPanel... basta farti un 
tuo PaginaPanel extends JPanel.
Ti fai tutti "i pezzi di interfaccia che vuoi" e poi li metti insieme.
E' più logico, lineare, manutenibile e soprattutto riusabile, rispetto a 
scrivere un unico file ed usare gli oggetti Swing "secchi".
Delvy

quindi mi consigli di fare(prendo in esempio la pagina uno) un nuovo
file con codice:
import javax.swing.*;
public class Paguno extends JPanel {
	public JPanel panel1;
	public  Paguno()
	{
		panel1 = new JPanel();
		panel1.setLayout( null);
		JLabel label1 = new JLabel( "Username:" );
                label1.setBounds( 10, 15, 150, 20 );
                panel1.add( label1 );
                JTextField field = new JTextField();
                field.setBounds( 10, 35, 150, 20 );
                panel1.add( field );
                JLabel label2 = new JLabel( "Password:" );
                label2.setBounds( 10, 60, 150, 20 );
                panel1.add( label2 );
                JPasswordField fieldPass = new JPasswordField();
                fieldPass.setBounds( 10, 80, 150, 20 );
                panel1.add( fieldPass );
 
	}
}
e poi richiamarlo?

Wolverine ha scritto:

Diciamo di si...
anche se è inutile avere tento Paguno un JPanel visto che Paguno E' UN 
JPanel.
Cmq hai capito il sistema.
Se per esempio il tuo programma deve avere un "pezzo di interfaccia 
grafica" che contiene delle informazioni (diciamo per esempio dati 
anagrafici di un cliente)e questo "pezzo in interfaccia grafica" deve 
essere presente in più finestre o in altri pannelli (per esempio quello 
di fatturazione, o di ordine, o quello che ti pare) allora ti fai un bel 
   ClientiPanel... ed usi sempre quello.
Delvy

niente da fare...dal file principale riescoa vedere gli altri ma quando
creo mi da subito errore:
Exception in thread "main" java.lang.NullPointerException
       at infaccia.Faccia.createPage1(Faccia.java:48)
       at infaccia.Faccia.<init>(Faccia.java:33)
       at infaccia.Faccia.main(Faccia.java:104)

risolto tutto..ora funzia