Button als string

Status
Niet open voor verdere reacties.

timo0909

Gebruiker
Lid geworden
6 aug 2008
Berichten
9
Hoi,

Ik zit met een probleem waar ik niet zelf uitkom.

Voor school moet ik een rekenmachine maken, alles werkt naar behoren, geen problemen.

Mijn probleem is als volgt:
Wanneer je bijvoorbeeld de knop 1 indrukt, moet deze een andere kleur geven, druk je hierna 2 in, moet 1 weer normale kleur krijgen en 2 weer een andere kleur.

Ik kan voor elke knop wel .setbackground gebruiken, maar dan heb ik alleen al hiervoor ruim 100 regels in gebruik (terwijl het zo kort mogelijk moet).

Ik denk dat wat ik probeer te doen wel mogelijk is, maar ik weet alleen niet hoe.
Bij het klikken op een button zet ik in een string op welke button er is geklikt. (Deze string noem ik knop). Wat ik dan wil als je op een andere button drukt dat er knop.setBackground(Color.GRAY);

Hierbij krijg ik de error dat knop (String) geen button is.

De error zelf is als volgt:
No accessible method with signature "setBackground(java.awt.Color)" was found in type "java.lang.String".

Weet iemand hoe dit op een simpele manier op te lossen valt?

Alvast bedankt,
Timo
 
Ik denk dat het beter is dat je een field 'lastClickedButton' voorziet. Als je op een knop geduwd hebt, dan zet je lastClickedButton gelijk aan de laatst geklikte knop,
zo kan je dan de achtergrond aanpassen. Wordt er dan weer op een knop geduwd, zet je de achtergrond van lastClickedButton terug normaal, en dan zet je
lastClickedButton weer gelijk aan de laatst geklikte knop en zo voort.

Ik heb het niet getest maar het moet werken.

Veel geluk,

hannesvdc
 
Laatst bewerkt:
Als je de kleur van een button wilt vervangen moet je het volgende doen. Je bent er wel bijna! :D

Code:
setBackground(Color.BLUE);

Heb ooit ook voor school een rekenmachine moeten maken en heb m laatst gevonden. Ik denk dat hij nog wel werkt, maar zal je nu vast zeggen dat je hem niet van mij krijgt. Ik zal je alleen in de goede richting sturen, anders had je namelijk niet op school gezetten! :thumb:
 
Als je de kleur van een button wilt vervangen moet je het volgende doen. Je bent er wel bijna! :D

Code:
setBackground(Color.BLUE);

Heb ooit ook voor school een rekenmachine moeten maken en heb m laatst gevonden. Ik denk dat hij nog wel werkt, maar zal je nu vast zeggen dat je hem niet van mij krijgt. Ik zal je alleen in de goede richting sturen, anders had je namelijk niet op school gezetten! :thumb:

Lees de vraag eens goed.. Hij probeert jouw regel al te gebruiken, en hij vraagt niet om volledige code..

@timo: wil je de button van kleur veranderen of de tekst op de button? Aan je vraag gezien (en dat je de String probeert te wijzigen) ga ik er vanuit dat de tekst van kleur moet veranderen.

Code:
JButton button = new JButton();
String text = "text";
button.setText(text);

//verander de tekst van kleur
button.setForeground(Color.BLUE);

Wat de rest van je code betreft, die 100 regels, zou je inderdaad met een hulpvariabele kunnen doen:

Code:
private JButton currentButton; //houdt bij welke knop een andere kleur heeft
public void actionPerformed(ActionEvent e)
{
   if(e.getSource() instanceof JButton)
   {
      JButton b = (JButton) e.getSource();
      b.setForeground(Color.BLUE);
      if(currentButton != null)
           currentButton.setForeground(Color.GRAY);
      currentButton = b;
   }
}
 
bedankt voor de reacties :)

heb het er met mijn informatica leraar even over gehad, en hij had het over een private void, heb het aan de hand hiervan op een vrij kortere manier kunnen oplossen! :) (heb in ieder geval minder regels nodig gehad dan mijn leraar)

In ieder geval bedankt voor de hulp! :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan