Question

J'ajoute un appareil de chauffage JBUTON et un appareil de chauffage JSLider à chaque onglet que je crée, le réchauffeur JButton pour l'éteindre et sur le chauffage Jslider pour choisir la température.

Le statut JSlider est préréglé sur FALSE, alors lorsque je clique sur le chauffage JButton pour allumer le chauffage,

J'en ai besoin pour définir le statut du JSLider sur true, comment puis-je accéder au radiateur jslider dans la classe de boutons de chauffage?Et sinon quelle autre voie est là pour faire cela ??.

Toute aide est appréciée, merci.

import java.util.ArrayList;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class MasterGUI extends JFrame implements ActionListener{

public MasterGUI(){

}

public void DisplayFrame(){
    ArrayList<Rooms> rooms;
    rooms = Building.getRoomList();

    JFrame master = new JFrame("Solar Master Control Panel"); 
    master.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container content = master.getContentPane();
    content.setBackground(Color.lightGray);

    JTabbedPane tabbedPane = new JTabbedPane();
    JPanel tmpPanel;

    for(int x = 0; x < rooms.size(); x++){
        tmpPanel = new JPanel();
        String roomName = rooms.get(x).getName();
        int roomId = rooms.get(x).getId();
        tabbedPane.addTab(roomName + " Room " + roomId, tmpPanel);

        for(int i = 0; i < rooms.get(x).roomLights.size(); i++){
            int lightId = rooms.get(x).roomLights.get(i).getId();
            JButton lights = new JButton("Light" + lightId);
            lights.setBackground(Color.red);
            lights.addActionListener(new LightButton(roomId, lightId));
            ((JPanel) tabbedPane.getComponentAt(x)).add(lights);
        }

        JButton heater = new JButton("Heater");
        heater.setBackground(Color.red);
        heater.addActionListener(new HeaterButton(roomId));
        JSlider heaterSlider = new JSlider(68, 73);
        heaterSlider.setPaintTicks(true);
        heaterSlider.setPaintLabels(true);
        heaterSlider.setMajorTickSpacing(1);
        heaterSlider.addChangeListener(new HeaterSlider(roomId));
        heaterSlider.setEnabled(false);
        ((JPanel) tabbedPane.getComponentAt(x)).add(heater);
        ((JPanel) tabbedPane.getComponentAt(x)).add(heaterSlider);
    }
    master.add(tabbedPane, BorderLayout.CENTER);
    master.setSize(800, 600);
    content.add(tabbedPane);
    master.setVisible(true);
}

classe Heaterbutton

 import java.util.ArrayList;
 import java.awt.*;
 import javax.swing.*;
 import java.awt.event.*;

public class HeaterButton implements ActionListener{
int roomNumber;

public HeaterButton(int room){
roomNumber = room;
}

public void actionPerformed(ActionEvent e){
ArrayList<Rooms> rooms;
rooms = Building.getRoomList();

    if(rooms.get(roomNumber - 1).roomHeater.getHeaterStatus() == true){
        rooms.get(roomNumber - 1).roomHeater.setHeaterOff();
        ((JButton)e.getSource()).setBackground(Color.red);

    }else{
        rooms.get(roomNumber - 1).roomHeater.setHeaterOn();
        ((JButton)e.getSource()).setBackground(Color.green);

    }
}
}

Était-ce utile?

La solution

Créez d'abord le curseur, puis transmettez-le sur le bouton.

changer:

 heater.addActionListener(new HeaterButton(roomId)); 

à:

 heater.addActionListener(new HeaterButton(roomId, slider)); 

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top