Istanziare frame solo dopo aver selezionato un'altro frame

di il
2 risposte

Istanziare frame solo dopo aver selezionato un'altro frame

Salve ragazzi ho un problema vorrei creare un piccolo quiz con le conoscenze che ho sui frame so usare le varie interfacce MouseListener le classi JLaber JRadioBotton JPanel e button ma ho un problema ovvero vorrei che la finestra successiva venisse visualizzata solo dopo che è stata fatta una selezione della finestra attuale, mi spiego se io scrivo




public class MainTesf {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//                    domanda         risp1      risp2      risp3   rispostaEsatta
		Frame  app=new Frame("come ti chiami","benito","giammaria","altro", 1);
		Frame  app2=new Frame("come ti chiami","benito","marco","altro", 1);
	}

}
vorrei che la seconda creazione del frame venga fatta solo dopo che si sia risposto alla domanda precedente come posso risolvere vi linko anche l'altra classe che gestisce la creazione del frame

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;


public class Frame {

	
	private JFrame finestra;
	private Button ok;
	private JRadioButton risp1,risp2,risp3;
	private JPanel pannello1;
	private JLabel domanda;
	private MouseListener SeiStatoCliccato;
	int risp=0;
	
	Frame(String doma,String ris1,String ris2,String ris3, final int numRisp)
	{
		finestra=new JFrame();
		finestra.setSize(300, 400);
		risp1=new JRadioButton(ris1);
		risp2=new JRadioButton(ris2);
		risp3=new JRadioButton(ris3);
		
		ButtonGroup gruppo;
		gruppo=new ButtonGroup();
		gruppo.add(risp1);
		gruppo.add(risp2);
		gruppo.add(risp3);
		domanda=new JLabel(doma);
		
		
		pannello1=new JPanel();
	
		pannello1.add(domanda);
		pannello1.add(risp1);
		pannello1.add(risp2,BorderLayout.CENTER);
		pannello1.add(risp3,BorderLayout.CENTER);
		ok=new Button("ok");
		pannello1.add(ok);

		@SuppressWarnings("unused")
		class ClickLister implements MouseListener{

			@Override
			public void mouseClicked(MouseEvent e) {
			if((risp1.isSelected())&&(numRisp==1))
			{
			risp++; // conto la risposta esatta
			
			
			}
				
			}

			@Override
			public void mousePressed(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseReleased(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseEntered(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent e) {
				// TODO Auto-generated method stub
				
			}

		}

		SeiStatoCliccato=new ClickLister();
		ok.addMouseListener(SeiStatoCliccato);
	
		finestra.add(pannello1);
	;
		finestra.setVisible(true);
		
	}
	
}

2 Risposte

  • Re: Istanziare frame solo dopo aver selezionato un'altro frame

    Ciao, non ho letto tutto il codice ma il problema mi sembra più che altro concettuale. Io direi che quando rispondi a una domanda lo fai selezionando qualcosa, cliccando da qualche parte, e questo lancia un evento. Nel codice che gestisce quell'evento metti il codice per la creazione della finestra successiva.
    Ad esempio se hai un JButton gli puoi associare un ActionListener. Nel corrispondente metodo
    actionPerformed
    metti il codice per la creazione della seconda finestra e dovresti risolvere.
  • Re: Istanziare frame solo dopo aver selezionato un'altro frame

    Allora se ho capito bene poteri risolvere mettendo 2 ascoltatori visto che in sostanza i frame con il nome la domanda etc li invoco dal main potrei mettere 1 ascootatore nel main che quando viene premuto il tasto OK da un ascoltatore controlla se è esatta la risposta e con l'altro ascoltatore creo una seconda finestra giusto?
Devi accedere o registrarti per scrivere nel forum
2 risposte