Meerdere buttons tegelijk laten verdwijnen

Status
Niet open voor verdere reacties.

Mikeno123

Gebruiker
Lid geworden
8 feb 2012
Berichten
5
Hallo allemaal,

Ik ben voor school het spel galgje aan het programmeren met behulp van java-editor. Ik ben al een mooi eind op weg, maar zit nu met een (klein) probleem.
Voor de 26 letters die je in kunt voeren heb ik 26 aparte buttons gemaakt. Wanneer een bepaald aantal fouten is gemaakt, moeten deze 26 buttons verdwijnen zodat de speler hier niet meer op kan drukken.
Nu kan ik dit voor elke letter apart doen volgens: A.setVisible(false); B.setVisible(false); C.setVisible(false); enz. enz. (de namen van de buttons zijn A, B, C enz.)
Op deze manier krijg ik een heel erg lange code.
Is er ook een mogelijkheid dit in één code te doen?? (Ik dacht zelf iets van: (A && B && C).setVisible(false); maar dit werkt helaas niet)
 
Ha, ik ben ook voor school een galgje aan het maken met Java Swing ^^
Ik probeer met een JTextField te werken, in plaats van buttons.
Maar die buttons zijn misschien niet zo'n slecht idee :)

Ik weet niet ofdat die buttons allemaal in hetzelfde panel staan en/of er niets anders in staat.
Maar misschien dat je gewoon alles van je JPanel kan halen? panel.removeAll(); of deze niet zichtbaar zetten?

MvG,

Driodor
 
Ik weet dat het misschien een beetje off-topic is, maar indien je verschillende buttons op basis van letters wilt disablen (wat ik me in kan denken) bedenk dan even dat je ook for-lussen kan maken met characters.

Code:
for(char letter = 'a'; letter < 'z'; letter++) {
      System.out.println(letter);
}

Groet,
NewbiProgrammer
 
Bedankt voor de reacties.

Ha, ik ben ook voor school een galgje aan het maken met Java Swing ^^
Ik probeer met een JTextField te werken, in plaats van buttons.
Maar die buttons zijn misschien niet zo'n slecht idee :)

Ik weet niet ofdat die buttons allemaal in hetzelfde panel staan en/of er niets anders in staat.
Maar misschien dat je gewoon alles van je JPanel kan halen? panel.removeAll(); of deze niet zichtbaar zetten?

MvG,

Driodor

Dit leek mij wel een goede manier om alle buttons tegelijk te laten verdwijnen. Ik heb dit eerst geprobeerd in een nieuwe applet:


import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class Testpanel extends Applet {
// Anfang Attribute
private TextField textField1 = new TextField();
private Button button1 = new Button();
private Panel Paneel1 = new Panel();
// Ende Attribute

public void init() {
// Anfang Komponenten
Panel Paneel1 = new Panel(null);
Paneel1.setBounds(0, 0, 300, 300);
add(Paneel1);

Panel Paneel2 = new Panel(null);
Paneel2.setBounds(0, 300, 300, 300);
add(Paneel2);

textField1.setBounds(16, 16, 73, 33);
Paneel1.add(textField1);

button1.setBounds(16, 16, 73, 33);
button1.setLabel("button1");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
button1_ActionPerformed(evt);
}
});
Paneel2.add(button1);
// Ende Komponenten

}
// Anfang Methoden
public void button1_ActionPerformed(ActionEvent evt) {
Paneel1.removeAll();
}
// Ende Methoden
}


Zoals je kunt zien heb ik 2 panelen onder elkaar gemaakt. In Paneel1 heb ik een tekstveld geplaatst en in Paneel2 een button.
Door de code "Paneel1.removeAll();" wil ik dit paneel en dus ook het tekstveld in dit paneel laten verdwijnen door op de button te klikken.
Wanneer ik nu op de button klik gebeurd er niets en blijft het tekstveld zichtbaar.
Er ontstaan verder geen foutmeldingen o.i.d en de applet start ook gewoon goed, alleen er gebeurd niet wat ik wil.
Weet iemand wat ik fout doe??
 
Ik heb zelf niet veel ervaring met applets, maar volgens mij moet het zoiets worden:

Code:
public void actionPerformed(ActionEvent evt) {
 if(evt.getSource() == button1) {

   ... action ..
} else if(evt.getSource() == button2) {
..
}

Je code bevat geen errors code, omdat je methodes aanmaakt, maar deze worden niet aangeroepen.

Hoe ik het zou doen:
1. Maak een innerklasse
2. Laat deze overerven van ActionListener
3. Vul de actionPerformed methode in binnen deze innerklasse
4. Voeg de ActionListener toe aan de button (button1.setActionListener(new myActionListener());


http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html
http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html

Kind regards,
NewbiProgr
 
Je kan voor zo iets het beste de CardLayout gebruiken.

Met een CardLayout kan je verschillende JPanel achter elkaar zetten, waarvan dan alleen de voorste zichtbaar is.


JPanel card1 = new JPanel();
.... //voeg hier je knoppen toe.
JPanel card2 = new JPanel();
....//voeg hier je ene knop toe.
...

cards = new JPanel(new CardLayout());
cards.add(card1, "3knoppen");
cards.add(card2, "1knop");

CardLayout cl = (CardLayout)(cards.getLayout());
cl.show(cards, "3knoppen");
//of
cl.show(cards, "1knoppen");
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan