Aussehen des Panels

Status
Nicht offen für weitere Antworten.

hannes68

Aktives Mitglied
Ich habe vor ein kleines Quiz zu programmieren
Aber bevor ich damit anfange möchte wissen ob es möglich ist das sich der Panel verändert.
Sprich ich klicke auf die richtige Antwort und es erscheint die neue Frage
Ich denke ihr versteht was ich meine :lol:
 
Code:
panel.removeAll();
panel.add(new JLabel("Wie viele Finger hat ein Fisch?"));
panel.revalidate();
panel.repaint();
 
Gibt es auch ein IDE mit den man sowas machen kann
Der Editor von Sun ist ja schön und gut aber gibt es auch noch ein anderen???
 
ääh eine IDE mit der man was machen kann?
java programmieren kann man mit jeder Java IDE 😀
 
Gibt wo ein Tutorials wo alles schön beschrieben ist ??

Ich hatte mal einen Umrechner gemacht mit dem GUI Editor von Sun
Aber das sah net so schön aus wegen der größe
Deswegen frage ich nach einem Tutorials wo zb steht wie man die Position und die Größe der Buttons und so festlegt
 
wieso schreibst du deine GUIs nicht selbst wenn die GUI editoren dir alles versauen? :-/

tutorials dazu gibts genug bei sun und sonstwo, guck in "Bücher und Tutorials->Liste von Tutorials"
 
hannes68 hat gesagt.:
Sprich ich klicke auf die richtige Antwort und es erscheint die neue Frage

hier kannst du auch einfach den Text des Labels ändern, das ist wesentlich einfacher:

Code:
JLabel lblDeinLabel = new JLabel("erster Text");
lblDeinLabel.setText("zweiterText");

natürclich den zweiten Text erst setzten wenn die Antwort gedrückt wurde 😉
 
äh? So macht ihr sowas ... JPanel löschen und neusetzen?
Das ist wirklich sehr sehr sehr umständlich.

Ihr habt dann Problem, wenn der User z.B. zurück Button klickt oder so. Es geht dann schwierig ...

Ich würde CardLayout nehmen.

1. Die Fragen und Antworten liegen in einer serialisierten Datei
2. Das Programm lädt die Datei und fügt die Panels in die CardLayout an.
3. Anzeigen ...

Dies führt zu einfacherer Erweiterbarkeit ...
 
er hat ja gar nicht den Panel gelöscht, nur den inhalt... die Componenten sind ev. immer noch vorhanden.

würde aber auch das cardLayout nehmen...
 
ist es nicht wirklich, du hast einfach verschiedene Panels die du per Buttons, ComboBox oder sonstwas durchgehen kannst.

schau es dir an, wirst du bestimmt noch einmal brauchen können 😀
 
ja sie können serialisiert werden, aber das is die schlechteste, zeitraubendste, aufwendigste und sinnlosetste möglichkeit die werte abzuspeichern 😉
 
😀 also vergess ich das gleich wieder *ausdemKopfschlagen*

und wie würdest du das dann speichern? wofür muss man eigentlich Komponenten speichern?
 
dotlens hat gesagt.:
und wie würdest du das dann speichern? wofür muss man eigentlich Komponenten speichern?
hmm ich wahrscheinlich in ner xml datei.
und es gibt keine gründe komponenten zu serialisieren. vielleicht wenn man was auf die festplkatet swappen will, aber das is schon weit hergeholt ,denke ich :-/
 
Sicher folgt ihr das MVC Konzept?

Model - View - Controller

Nur das Model wird serialisiert. Der Rest soll man überhaupt nicht machen!!!

Wichtig ist nur, dass die Fragen und Antworten nicht lesbar sein sollen.
Deshalb habe ich eine einfache Lösung genommen, was für dich als Anfänger kein Problem ist.

Wenn du vielleicht doch schon viel mit Java gemacht hast, könntest du die Fragen und Antworten
mit eigener Verschlüsselung (XOR Algo z.B.) codieren.

Model:

Klasse: Quiz
- Frage
- Antwort
- Level

Klasse: Spieler
- Name
- Punkte
- Alter

Controller:

Klasse: Controller

Hier soll der Spielablauf gesteuert werden.
Controller kennt Model und View.
View kennt Model nicht. Model kennt View nicht.

View:

Klasse: Frame
...

Der Rest kommt allein von dir heraus, ok?
 
Ich fange erstmal leicht an 🙂 verbessern kann man das immer noch

Also die Antworten zu ersten Frage
Code:
JRadioButton opt3 = new JRadioButton ("Sänger",false);
JRadioButton opt4 = new JRadioButton ("Spinner",false);

So wenn jetzt auf Sänger geklickt wird sollen sich die Antworten ändern
Code:
opt3.addActionListener( new ActionListener(){ 
        public void actionPerformed(ActionEvent e) { 

        opt3.setText("Hallo");
        opt4.setText("Guten Tag");

         } 
      });

Doch das geht nicht 🙁
Aber wie sonst?
 
So next Prob:
Code:
public class Mein extends JFrame    {
	  JRadioButton opt3 ;
	  JRadioButton opt4;
	  JRadioButton opt5;
	  JLabel text1;
	  JLabel text2;
	class richtig implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			int i;
			text1.setText("2.Frage:");
			text2.setText("Wer war ...");
			opt3.setText("hallo");
			opt4.setText("nochmal");
		}
			
	}
	class falsch implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			int i;
			text1.setText("Das war leider falsch");
			text2.setText("");
			opt3.removeAll();
			opt4.removeAll();
			
			
		}
			
	}

	public static void main(String[] args) {
		Mein auswahl = 
	        new Mein("Mehr Auswahl mit Swing!");
		auswahl.pack();
	    auswahl.setSize(640,400); 
	    auswahl.show(); 
	}
	Mein(String titel)
    {
    super(titel); 
    
    JPanel pane = new JPanel();
    pane.setLayout(new GridLayout(3, 4, 3, 3));
    setContentPane(pane); 

    JPanel zelle1 = new JPanel();
    JPanel zelle2 = new JPanel();
    JPanel zelle3 = new JPanel();
    JPanel zelle4 = new JPanel();
    JPanel zelle5 = new JPanel();
    JPanel zelle6 = new JPanel();
    JPanel zelle7 = new JPanel();
    JPanel zelle8 = new JPanel();
    JPanel zelle9 = new JPanel();
    JPanel zelle10 = new JPanel();
    JPanel zelle11 = new JPanel();
    JPanel zelle12 = new JPanel();
    
    text1 =  new JLabel("Frage 1:",  SwingConstants.LEFT);
    text1.setFont(new Font("Monospaced", Font.BOLD,12));
    zelle1.add(text1);
    text2 =  new JLabel("Wer war Heino?",  SwingConstants.LEFT);
    text2.setFont(new Font("Monospaced", Font.BOLD,12));
    zelle5.add(text2);
    
    
    ButtonGroup gruppe = new ButtonGroup();

    opt3 = new JRadioButton ("Sänger",false);
    opt4 = new JRadioButton ("Spinner",false);
    gruppe.add(opt3);
    gruppe.add(opt4);
    zelle6.add(opt3);
    zelle7.add(opt4);
    pane.add(zelle1);       
    pane.add(zelle2);       
    pane.add(zelle3);       
    pane.add(zelle4);       
    pane.add(zelle5);       
    pane.add(zelle6);       
    pane.add(zelle7);       
    pane.add(zelle8);       
    pane.add(zelle9);       
    pane.add(zelle10);       
    pane.add(zelle11);       
    pane.add(zelle12);      
    
    opt3.addActionListener( new richtig()
        );
    opt4.addActionListener( new falsch()
    );

    
	class CFensterLauscher extends WindowAdapter 
    {
    public void windowClosing(WindowEvent e)
       {
       System.exit(0); 
       }
    };  

 addWindowListener(new CFensterLauscher()); 
 }
}

Wenn ich das Prog so weiter schreiben würde wäre opt3 immer richtig und opt4 immer falsch
Code:
 opt3.addActionListener( new richtig()
        );
    opt4.addActionListener( new falsch()
    );
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben