Volledige quiz in JAVA

Status
Niet open voor verdere reacties.

Virusbeatbox

Gebruiker
Lid geworden
18 dec 2007
Berichten
201
Beste, ik moet van school een quiz maken in JAVA

Deze heeft 3 soorten vragen:
- Beeldvragen
- Meerkeuzevragen
- Juist/fout vragen

De beeldvragen hebben een afbeelding en een tekstvak voor het antwoord
De meerkeuzevragen hebben 4mogelijke antwoorden in radiobuttons
De juist/fout vragen hebben 2radiobuttons met Juist of Fout

Deze erven van hun superklasse Vraag die:
- een vraagstelling heeft (verschillend voor elke vraag)
- een instructietekst (3 verschillende mogelijkheden, hangt af van welke soort vraag)

Deze klasse erft op zijn beurt van de superklasse Quiz waarin een array van vragen zit (die worden gehaald uit een access database).

tenslotte erft de klasse Quiz van de klasse QUI. Deze bevat:
- knop Registreren
- knop Speel quiz
- tekstvak voor login
- tekstvak voor wachtwoord

Zij hebben ons aangeraden om 1 JFrame te gebruiken met de layout. Afhankelijk van welk scherm er geopend wordt, zullen de nodige attributen setVisible(true) komen te staan, de overbodige attributen setVisible(false).

Om uiteindelijk tot mijn vraag te komen.
- In welke klasse moet ik deze JFrame implementeren?
- Hoe los ik dit op? Moet er in deze klasse ALLE attributen komen te staan en via de methodes die achter de knoppen zitten, de attributen visible(true) of visible(false) zetten of...
- Hebben jullie andere suggesties? greetzz
 
Laatst bewerkt:
Laatst bewerkt:
Ik post even wat ik al gedaan heb.

Ik heb de klasse Vraag, beeldvraag, meerkeuzevraag, juist/foutvraag en de klasse QUI volledig geïmplementeerd. Nu vraag ik enkel iemands hulp/mening over waar ik het beste een JFrame maak waardoor dan, aan de hand van de soort vraag, de nodige attributen setVisible(true) komen te staan en de onnodige attributen setVisible(false).

Van zodra ik iemands mening kan volgen, ga ik verder over tot het implementeren van de JFrame. Voor alle duidelijkheid, ik vraag dan niet dat iemand dit voor mij doet!

Hartelijk dank
 
Bekijk mijn code van cv een geen voorbeeldcode maar er kunnen stukken inzitten die u van pas kunne komen
Verder vindt u alle verder nodige lib op code.google.com => javamylibs
als ge info wenst die repos is ook van mij dus als ge met iets zit wil ik wel eens helpen maar ter ontspanning dan .
PHP:
package be.djdb.swing;
import java.awt.BorderLayout;
import java.awt.datatransfer.Clipboard;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.UIManager;
import be.djdb.generators.MDI;
import be.djdb.generators.Menu;
import be.djdb.swing.CV.CV;
import be.djdb.preparts.*;
import com.sun.pdfview.PagePanel;

/**
* @author Lieven Roegiers
* @copyright 2007
* @from UpdateCV
*/
 public class Cvlieven extends MDI{
	private static CV mijncv;
	public static final long serialVersionUID = 1L;
	Clipboard clipboard = new Clipboard ("My first clipboard");
	private static final boolean DEBUG = false;
	PagePanel panel = new PagePanel();
	    public Cvlieven() {
        	super("CV Lieven Roegiers");
            try {
				UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
			} catch (Exception e) {}
			
			add(new Toren(1,new String[]{"./lib/img/logo.gif","./lib/img/next.gif"}), BorderLayout.SOUTH);
     	    add(new JLabel("Hier komt de cv van lieven roegiers van XML TO PDF, DOC. NOW UNDER CONSTRUCTION!"), BorderLayout.SOUTH); 			     	    
     	    setVisible(true);
     	    mijncv = new CV();
 			gui();
 			pack();
		}
	public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable(){
            public void run(){
                new Cvlieven().setVisible(true);
            }
        });    
		//<<<<<<<<<<<<<<<<<<<<<<<<<<<@MAIN>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	        // resourcelijst = ResourceBundle.getBundle("be.djdb.resources.Database_mysql");
	        // user = resourcelijst.getString("db.user") ;
	        // pwx = resourcelijst.getString("db.password");
            // Properties props = new Properties();
            // relatief tov .class files:
            // props.load(getClass().getResourceAsStream("notepad.properties"));
    	 }

         private void gui(){
         	if (DEBUG){log(Level.WARNING, "LOCAL_GUIsetup" );}
        	menusetup();
        	framesetup();
         }

         private void menusetup(){
            Menu menu= new Menu("CVlieven");
         	menu.addmenuitem("File","open",new JMenuItem());
         	menu.addmenuitem("File","exit",new JMenuItem());
         	menu.addmenuitem("Edit","underconstruction",new JMenuItem());
         	menu.addmenuitem("Window","underconstruction",new JMenuItem());
         	menu.addmenuitem("Help","underconstruction",new JMenuItem());
			setJMenuBar(menu.getmenubar());
         }

         private void framesetup(){
         	if (DEBUG){ log(Level.WARNING, "LOCAL_Framesetup" ); }
    	    Uconstruct();//underconstruction
           	add(new PDFviewer(mijncv.getPdffile()),BorderLayout.CENTER);	
         }

         private void Uconstruct(){
         	if (DEBUG){log(Level.WARNING, "LOCAL_Uconstruct" ); }
         	String  x2 = "<html><b><u>Under construction</u></b><br />";
        
     
           	JEditorPane editpane = new JEditorPane("text/html", x2);
        	add(editpane,BorderLayout.WEST); 
         }

         private static  void log(Level level, String msg ){
             String tag ="<>>>>*UpdateCV-©L Roegiers 80072631156*<<<<>";
             Logger.getLogger(Cvlieven.class.getName()).log(level, tag + msg);
         }
}
 
Laatst bewerkt:
Verder maak je altijd een
  • compare
  • enablegui(boolean)
  • guisetup/gui
  • verder log
  • constructor
  • indien main ook runneble voor meerder instanties
 
Bedankt voor je hulp maar euhm, sorry van m'n taalgebruik maar, hier snap ik dus de balle van.

Ik ben een eerstejaarsstudent en deze code's snap ik totaal niet. We moeten dus een quiz maken met 1 layout met daar alle attributen in (knoppen, labels,...) afhankelijk van de soort vraag die in de quiz aan bod komt, moeten de gewenste attributen via setVisible(true) zichtbaar komen. Al de rest moet setVisible(false) en dit om het geheugen van de computer zo weinig mogelijk te belasten waardoor er niet telkens een nieuw JFrame wordt aangeroepen...
 
De eerste link dat ik u geef is dit
Als er jnlp zich toonbaar maakt (dit is een xmlbestand)en zal het bestandje uitvoeren zodat je kan zien wat het doet
http://java.sun.com/docs/books/tutorial/uiswing/components/tooltip.html
http://balusc.blogspot.com/2007/01/generics.html
Bekijk de code die ik al gaf maar weet dat je de lib die verwijst naar mijn repos (SVN) zult moeten downloaden voor het kunnen gebruiken waar je zal zien dat Ik een standaard simpel menu gemaakt heb waar je zeker een propertiefile moet aanmaken en op de juiste plaats in je project maken Maar dit helpt je nog niet

Je hebt nodig
  • één object vraag
  • één object antwoord die true false returnt met een collectie van radiobuttons
  • één object resultaat
  • een main file om het geheel te runnen
Dus als je dit hebt heeft elke vraag een antwoord dus moet je weten hoe je het in de vraag implementeert
dus zal je een collectie van vragen hebben zodat je vragen kan toevoegen aan een collectie
je loopt dan over de collectie zo kan je van elke vraag vragen of deze is opgelost en of deze juist was zodat je +1 0 -1 kan geven
verder moet je dan wel ééns ook een collectie maken waar je de vraagen random zal uitkiezen dus dan zal deze <int,vraag>zijn dus hier is de oplossing gelieve code hieronder te deponeren zodat ik deze ook kan hebben en bekijken
Dus veel succes...
 
Dit is de code van mijn klasse GUI:

[XML]import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

class GUI extends JFrame
{
private JLabel lblWelkom, lblWelkomtekst;

private JLabel lblLogin, lblPaswoord;
private JTextField txtLogin = null;
private JPasswordField Paswoord = null;

private JButton btnRegistreer, btnSpeel;

private JPanel north,center,south;

public GUI()
{
super("::quizMountain - Login");

lblWelkom = new JLabel("Welkom!");
lblWelkomtekst = new JLabel("Gelieve uw login en paswoord in te geven.");
lblLogin = new JLabel("Login");
txtLogin = new JTextField(10);
lblPaswoord = new JLabel("Paswoord");
Paswoord = new JPasswordField(10);
btnRegistreer = new JButton("Registreer");
btnSpeel = new JButton("Speel quiz");

north = new JPanel();
center = new JPanel();
south = new JPanel();

Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(north,BorderLayout.NORTH);
c.add(center,BorderLayout.CENTER);
c.add(south,BorderLayout.SOUTH);

north.setLayout(new GridLayout(2,1,10,10));
north.setBackground(Color.BLUE);
north.add(lblWelkom);
lblWelkom.setForeground(Color.WHITE);
north.add(lblWelkomtekst);
lblWelkomtekst.setForeground(Color.WHITE);

center.setLayout(new FlowLayout());
center.add(lblLogin);
center.add(txtLogin);
center.add(lblPaswoord);
center.add(Paswoord);

south.setLayout(new FlowLayout());
south.setBackground(Color.BLUE);
south.add(btnRegistreer);
south.add(btnSpeel);

btnRegistreer.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
registreren();
}
});
btnSpeel.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
speelQuiz();
}
}
);
}
public void registreren()
{
registreerFrame app = new registreerFrame();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(330,350);
app.setVisible(true);
app.setLocationRelativeTo(null);
}

public void speelQuiz()
{
JOptionPane.showMessageDialog(null, "Veel plezier met de quiz!");
setVisible(false);

}
}[/XML]

Ik zou van hieruit een scherm moeten krijgen waarin de quiz wordt gespeeld. Er mag echter geen JFrame aangeroepen worden, er moet gewerkt worden met visible(true) en (false), hoe los ik dit op?
 
Laatst bewerkt:
Hier zou je mee aan de slag moeten kunnen
PHP:
 public class Test {
  public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable(){
                      public void run(){       new GUI().setVisible(true);          } 
               });    
 
         }
   }
 
Ok het is al aardig gelukt om te werken met panels, nu heb ik nog een vraagje.

Ik heb volgende code:

[XML]
btnSpeel.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
lbl...
btn...
...
}
)};
[/XML]
nu wil ik, ipv die lbl en btn en andere attributen en acties die binnen die actionPerformed staan, in een methode steken. Maar een methode moet gemaakt worden buiten de constructor en van zodra ik dit doe en al die attributen die nu tussen actionPerformed sta, daar tussen zet, dan krijg ik een foutmelding bij de c.add(lbl...); de c staat dan rood onderlijnt en geeft de fout "c can not be resolved". Hoe los ik dit op zodat ik tussen de bovenstaande code gewoon de naam van de methode zet en dus onderaan de attributen bij de methode kan plaatsen zonder dat het die foutmelding geeft?

greetz
 
PHP:
	ActionListener N_actionlistener = new ActionListener(){
		public void actionPerformed (ActionEvent e){
			if (is_empty(txtName,txtPas_1,minNLengt)){
			  infoMessage("Uw naam(min " + minNLengt + " char)mag niet leeg zijn.",rgb_reject);
			} else{
			  strtxtnaam= txtName.getText();
			  infoMessage("Welkom "+strtxtnaam.toUpperCase()+" .",rgb_accept);
			}
		}
		
	};
 
Bedoel je dit ??

Code:
public class Test extends JPanel{

	JButton knop;
	
	String tekst = "hallo";
	
	int a = 1;
	int b = 1;
	
	public Test() {
		String tekst1 = "hallo";
		final String tekst2 = "hallo";  //final -> variable tekst2 mag nooit meer veranderen..
		
		tekst1 = "hoi!";
		//tekst2 = "hoi!"; dit mag niet tekst2 is final!  
		
		knop = new JButton("test");
		knop.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				knopActie();
				
				System.out.println(tekst); //dit mag..
				// System.out.println(tekst1);  dit mag niet!
				System.out.println(tekst2); //dit mag weer wel
			}
		});
	}
	
	public void knopActie() {
		int antwoord = a + b;
	}
	
}
 
Eventjes een vraagje,

bestaat de mogelijkheid om in mijn Main klasse een objectklasse aan te roepen die ervoor zorgt dat de panel van de Main klasse vervangen wordt door de panel van de objectklasse met zijn eigen buttons en textfields en deze te laten zien in de frame van de main klasse?
 
Ouh super, weet u toevallig hoe of hebt u eventueel een klein voorbeeldje? heb reeds alles geprobeerd ma nog geen goed resultaat bekomen :(
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan