View Single Post
Old 27-04-2015, 21:04   #1
Moltack
Junior Member
 
Iscritto dal: Apr 2015
Messaggi: 1
[Java]Problema Interfaccia grafica

Salve a tutti ho finito di studiare da poco java e ora sto iniziando a studiare le interfacce grafiche.Volevo fare un piccolo programmino di quiz con domande e risposte.Il mio problema e questo:

-Creo la classe main che contiene la schermata iniziale di benvenuto e un pulsante che dovrebbe passare al panel successivo che contiene le domande.

-nel main creo il frame contenente un panel con al suo interno appunto il pulsante

-Creo un altra classe che contiene che la prima schermata di domande e risposte(Naturalmente questa classe e un panel)

il mio problema e che non so come far cambiare il panel che sta nel main con il panel che contiene le domande e risposte.Su internet consigliano il CardLayout e utilizzando quello non so come richiamare nel CardLayout la classe delle domande.
Se invece faccio tutto un codice,cioč creo un unico e grande codice nel main, e utilizzo il CardLayout il programma funziona.Secondo me il problema e cosa inserire actionPerformed

Scusate se non sono stato molto chiaro ma spero che avete capito.Ecco il codice delle 2 classi

CLASSE QUIZ(contenente il main)
Codice:
public class Quiz extends JFrame{

	private JFrame frame;
	private Container contenitore;
	private CardLayout cardlayout;
	private JPanel panel;
	private JPanel p1;
	
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Quiz window = new Quiz();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}


	public Quiz() 
	{
		frame = new JFrame("Quiz");
		frame.setBounds(100, 100, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		contenitore=frame.getContentPane();
		contenitore.setVisible(true);
		
		initialize();
	}
	
	private void initialize() 
	{
		
		cardlayout=new CardLayout(); //Creazione CardLayout
		
		panel = new JPanel(cardlayout); //Assegno al JPanel il               
                                                                CardLayout
		p1 = new JPanel();
		
		panel.add(p1);

		
		JLabel lblBenvenuto = new JLabel("  Benvenuto");
		p1.add(lblBenvenuto);
		
		
		
		panel.setBackground(Color.GREEN);      //Imposto lo sfondo per  
		p1.setBackground(Color.BLUE);            //capire quali panel sia 
		frame.setBackground(Color.MAGENTA);  //stato aggiunto dopo il
                                                                        //click del bottone

		contenitore.add(panel);	
		bottone();
	}


	private void bottone()
	{
		JButton Bottone = new JButton("Clicca per iniziare");
		p1.add(Bottone);
		Bottone.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) 
			{
				panel.remove(p1);
				PaginaQuiz paginaQuiz=new PaginaQuiz();
				
				paginaQuiz.setBounds(100, 100, 450, 300);
				paginaQuiz.setBackground(Color.YELLOW);
				panel.add(paginaQuiz);
				panel.repaint();
				contenitore.revalidate();		
			}
		});
	}
}
ClASSE PAGINEQUIZ
Codice:
public class PaginaQuiz extends JPanel {

	private JPanel contentPane;
	private CardLayout cardLayout;
	
	
	public PaginaQuiz()
	{
		initialize();
		
	}
		
		private void initialize() {
		
		setBounds(100, 100, 450, 300);
	
		JPanel panel = new JPanel();
		
		SpringLayout sl_panel = new SpringLayout();
		panel.setLayout(sl_panel);
		
		//Creazione label per la Domanda
		JLabel lblNewLabel = new JLabel("Domanda");
		sl_panel.putConstraint(SpringLayout.NORTH, lblNewLabel, 36, SpringLayout.NORTH, panel);
					panel.add(lblNewLabel);
	
		
		//Creazione label per le Risposte
		
		JButton btnRisposta = new JButton("risposta 1");
		sl_panel.putConstraint(SpringLayout.WEST, lblNewLabel, 0, SpringLayout.WEST, btnRisposta);
			btnRisposta.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					//qui dovrei accedere a un altro panel se la
                                       //risposta e errata o corretta
				}
			});
		panel.add(btnRisposta);

Ultima modifica di Moltack : 27-04-2015 alle 21:17.
Moltack č offline   Rispondi citando il messaggio o parte di esso