J'ai regardé plusieurs des questions semblables et n'ai pas été capable de faire ce travail. J'affiche l'heure et ajoute un compteur qui compte jusqu'à 4 et recommence, mais je ne peux l'obtenir que pour définir la couleur d'arrière-plan de départ. Qu'est-ce que j'oublie ici? J'ai essayé de mettre mes instructions if dans quelques endroits. Tout sauf le changement de couleur fonctionne très bien.J'essaye de changer la couleur de fond d'un JPanel chaque fois qu'un bouton est pressé
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class TimeFrame extends JFrame {
private static final int FRAME_WIDTH = 250;
private static final int FRAME_HEIGHT = 200;
private JButton CurrentTime;
private JLabel CurrentTimeLabel;
private JTextField CurrentTimeField;
private int click;
private JTextField clicktest;
public TimeFrame() {
CurrentTimeLabel = new JLabel("The Current Time is: ");
createTextField();
createButton();
createPanel();
setSize(FRAME_WIDTH, FRAME_HEIGHT);
setSize(250, 200);
initialize();
}
private void initialize()
{
click = 0;
}
private void createTextField()
{
final int FIELD_WIDTH = 10;
CurrentTimeField = new JTextField(FIELD_WIDTH);
Date now = new Date();
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
CurrentTimeField.setText("" + dateFormat.format(now));
clicktest = new JTextField(FIELD_WIDTH);
clicktest.setText(" " + click);
}
private void createButton()
{
CurrentTime = new JButton("Display Current Time");
ActionListener listener = new AddCurrentTimeListener();
CurrentTime.addActionListener(listener);
}
private void createPanel()
{
JPanel panel = new JPanel();
//panel.addActionListener(backgroundListener);
panel.add(CurrentTimeLabel);
panel.add(CurrentTimeField);
panel.add(CurrentTime);
panel.add(clicktest);
//int click = 0;
if (click == 0){
panel.setBackground(Color.ORANGE);
}
else if (click == 1) {
panel.setBackground(Color.YELLOW);
}
else if (click == 2) {
panel.setBackground(Color.BLUE);
}
else if (click == 3) {
panel.setBackground(Color.GREEN);
}
else if (click == 4) {
panel.setBackground(Color.PINK);
}
add(panel);
}
class AddCurrentTimeListener implements ActionListener
{
public void actionPerformed(ActionEvent event){
new java.util.Date();
Date now = new Date();
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
CurrentTimeField.setText("" + dateFormat.format(now));getClass();
if (click < 4){
click++;
} else {
click = click - 4;}
clicktest.setText("" + click);getClass();
/**
if (click == 0){
panel.setBackground(Color.ORANGE);
}
else if (click == 1) {
panel.setBackground(Color.YELLOW);
}
else if (click == 2) {
panel.setBackground(Color.BLUE);
}
else if (click == 3) {
panel.setBackground(Color.GREEN);
}
else if (click == 4) {
panel.setBackground(Color.PINK);
}
*/
repaint();
}
}
}
Toute la logique dans votre méthode 'createPanel' pour changer l'arrière-plan doit aller dans les boutons' ActionListener', donc quand vous cliquez sur le bouton, il peut faire quelque chose – MadProgrammer
Bienvenue sur SO. S'il vous plaît voir https://stackoverflow.com/help/someone-answers – c0der