Buttons

Zoddel

Grünschnabel
Hallo! Ich hab mir nen kleines Quiz gebastelt mit blueJ.
Ich hab im Applet 5 Buttons für: Antwort A, B, C, D und nächste Frage.
Diese werden mir jedoch die ganze Zeit angezeigt. Ich würde gerne in einer Methode (z.b. in Frage 1) nur die Antwort Buttons haben und nicht den nächste Frage-Button. Außerdem hab ich noch wenn eine frage richtig oder falsch ist eine methode wo er nur schreibt "richtig" oder "falsch". da sollte nur der button für nächste frage erscheinen und nicht die antwort-buttons. muss ich die buttons dann lok. in den methoden definieren, wenn ja wie und sonst wie geht das? :) hab hier noch den quelltext vom applett und nen beispiel aus der klasse:

APPLET
Java:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Oberfläche extends JApplet implements ActionListener
{
 
Quiz quiz1;
Button btnA;
Button btnB;
Button btnC;
Button btnD;
Button btnNächsteFrage;

    public void init()
    {
        quiz1 = new Quiz();
        btnA = new Button("Antwort A");
        btnB = new Button("Antwort B");
        btnC = new Button("Antwort C");
        btnD = new Button("Antwort D");
        btnNächsteFrage = new Button("Nächste Frage");
        getContentPane().setLayout(null);
        getContentPane().add(btnA);
        getContentPane().add(btnB);
        getContentPane().add(btnC);
        getContentPane().add(btnD);
        getContentPane().add(btnNächsteFrage);
        btnA.setBounds(35,440,100,50);
        btnA.addActionListener(this);
        btnB.setBounds(145,440,100,50);
        btnB.addActionListener(this);
        btnC.setBounds(255,440,100,50);
        btnC.addActionListener(this);
        btnD.setBounds(365,440,100,50);
        btnD.addActionListener(this);
        btnNächsteFrage.setBounds(365,350,100,50);
        btnNächsteFrage.addActionListener(this);
    }

   
 
    public void paint(Graphics g)
    {  
       if (quiz1.fragennummer==0) quiz1.anfangsbildschirm(g); else
       if (quiz1.fragennummer==1) quiz1.frage1(g); else
       if (quiz1.fragennummer==2) quiz1.frage2(g); else
       if (quiz1.fragennummer==3) quiz1.frage3(g); else
       if (quiz1.fragennummer==4) quiz1.frage4(g); else
       if (quiz1.fragennummer==5) quiz1.frage5(g); else
       if (quiz1.fragennummer==6) quiz1.frage6(g); else
       if (quiz1.fragennummer==7) quiz1.frage7(g); else
       if (quiz1.fragennummer==8) quiz1.frage8(g); else
       if (quiz1.fragennummer==9) quiz1.frage9(g); else
       if (quiz1.fragennummer==10) quiz1.frage10(g); else
       if (quiz1.fragennummer==11) quiz1.endbildschirm(g);
    }

  public void actionPerformed(ActionEvent event)
    {
        if (event.getSource() == btnNächsteFrage)
        quiz1.fragennummer=quiz1.fragennummer+1;
        repaint();
        if (event.getSource() == btnA)
        quiz1.antwort='A';
        repaint();
        if (event.getSource() == btnB)
        quiz1.antwort='B';
        repaint();
        if (event.getSource() == btnC)
        quiz1.antwort='C';
        repaint();
        if (event.getSource() == btnD)
        quiz1.antwort='D';
        repaint();
        
    }
  
}

KLASSE
Java:
import java.awt.*;

public class Quiz
{
  
int fragennummer = 0;
char antwort;
int richtig=0;
int falsch=0;

    public Quiz()
    {
      
    }
    
public void anfangsbildschirm(Graphics g)
{
     g.setColor(new Color(255,255,255));
     g.fillRect(0,0,1000,1000);
     g.setColor(new Color(0,0,0));
     g.drawString("QUIZ", 175, 200);
     g.drawString("10 Fragen", 175, 235);
     g.drawString("Allgemeines & Aktuelles", 175, 270);
}
    
public void endbildschirm(Graphics g)
{
     g.setColor(new Color(255,255,255));
     g.fillRect(0,0,1000,1000);
     g.setColor(new Color(0,0,0));
     g.drawString("Sie haben " + richtig + " Frage(n) richtig und", 175, 200);
     g.drawString("  "+falsch+" Frage(n) falsch beantwortet.", 175, 235);
    }

   
public void richtig(Graphics g)
{
     g.setColor(new Color(255,255,255));
     g.fillRect(0,0,1000,1000);
     g.setColor(new Color(0,0,0));
     g.drawString("Richtig!", 20, 20);
     antwort=' ';
     richtig=richtig+1;
}

public void falsch(Graphics g)
{
     g.setColor(new Color(255,255,255));
     g.fillRect(0,0,1000,1000);
     g.setColor(new Color(0,0,0));
     g.drawString("Falsch!", 20, 20);
     antwort=' ';
     falsch=falsch+1;
}    
    
    
public void frage1(Graphics g)
    { 
        
     g.setColor(new Color(255,255,255));
     g.fillRect(0,0,1000,1000);
     g.setColor(new Color(0,0,0));
     g.drawString("Frage 1", 20, 20);
     g.drawString("Was ist Kaffee ohne Milch?",20,100);
     g.drawString("Antwort A: heiß & fettig",20,150);
     g.drawString("Antwort B: süß & sauer",20,175);
     g.drawString("Antwort C: schwarz & lecker",20,200);
     g.drawString("Antwort D: würzig & süffig",20,225);
     if (antwort == 'A')
     falsch(g);
     if (antwort == 'B') 
     falsch(g);
     if (antwort == 'C') 
     richtig(g);
     if (antwort == 'D') 
     falsch(g);
     
    }
funktionieren tut es :)
 
Zuletzt bearbeitet von einem Moderator:

zerix

Hausmeister
Moderator
Hallo,

nutze doch bitte nächstes mal die Code-Tags.

Mit setVisible() kannst du einen Button sichtbar oder unsichtbar machen.

MFG

Sascha
 

hammet

himekishi
Richtig, mit setVisible() kann man die Buttons aus- bzw. einblenden.
Mit setEnable() kann man die Button aktivieren bzw. deaktivieren. Sie werden zwar angezeigt, aber man kann nicht mit ihnen interaggieren. Aber das nur mal so als Zusatzinformation :)
 

Zoddel

Grünschnabel
und wie und wo muss ich das dann einfügen? kann einer bitte ein kleines beispiel an meinem quiz machen für ein button? :)
hab schonmal nach der methode gegooglet aber bin ich richtig schlüssig geworden weil das alles nicht das ist was ich suche
ich hatte gedacht ich schreib z.b. in frage1() zum schluss irgendwie btnNächsteFrage.setVisible(false) aber das geht nicht ^^
 

Zoddel

Grünschnabel
ahhh ich hab schon ne lösung :) ich denke das müsste ich hinbekommen sonst meld ich mich nochmal :)
danke an beide ;D
 
Zuletzt bearbeitet:

zerix

Hausmeister
Moderator
Code:
button.setVisible(false); //Button nicht sichtbar
button.setVisible(true); //Button sichtbar

Das ganze in deinen Code richtig einzusetzen, ist deine Aufgabe. Schließlich musst du wissen, wann du welchen Button sehen möchtest.

MFG

Sascha
 

Zoddel

Grünschnabel
das mit dem button.setVisible(true/false) hab ich jetzt schon verstanden
ich bekomm das bloß nich in mein programm rein :(
ich hab mir gedacht ich mal ne var "buttons" als boolean und in den fragen setze ich buttons aus false und und in den richtig- und falschbildschirmen als true und im applet bei paint if (quiz1.buttons==true) btnNächsteFrage.setVisible(true) und if (quiz1.buttons==false) btnNächsteFrage.setVisible(false) aber das t nicht :(
wie und wo könnte ich das noch machen?
 

hammet

himekishi
Gut, ich würde dir empfehlen für diesen Teil hier :

Code:
    public void paint(Graphics g)

    {  
       if (quiz1.fragennummer==0) quiz1.anfangsbildschirm(g); else
       if (quiz1.fragennummer==1) quiz1.frage1(g); else
       if (quiz1.fragennummer==2) quiz1.frage2(g); else
       if (quiz1.fragennummer==3) quiz1.frage3(g); else
       if (quiz1.fragennummer==4) quiz1.frage4(g); else
       if (quiz1.fragennummer==5) quiz1.frage5(g); else
       if (quiz1.fragennummer==6) quiz1.frage6(g); else
       if (quiz1.fragennummer==7) quiz1.frage7(g); else
       if (quiz1.fragennummer==8) quiz1.frage8(g); else
       if (quiz1.fragennummer==9) quiz1.frage9(g); else
       if (quiz1.fragennummer==10) quiz1.frage10(g); else
       if (quiz1.fragennummer==11) quiz1.endbildschirm(g);
    }

einen Switch-Case-Block zu verwenden. Er ist übersichtlicher und zudem schneller als diese verschachtelten If-Abfragen.