Pregunta

Estoy agregando un acero de calentador y un calentador jlider a cada pestaña que estoy creando, el calentador JButton para apagarlo y encendido y el calentador JSLider para elegir la TEMP.

El estado JSLIDER está preajustado a FALSO, por lo que cuando hago clic en el calentador JButton para encender el calentador,

Necesito que establezca el estado del jslider en verdadero, ¿cómo puedo acceder al calentador jlider en la clase de botón calentador?¿Y si no, qué otra forma hay para hacer esto?

Se aprecia cualquier ayuda, gracias.

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);
}

Clase de BoterButton

 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);

    }
}
}

¿Fue útil?

Solución

primero crea el control deslizante y luego pásalo al botón.

CAMBIO:

 heater.addActionListener(new HeaterButton(roomId)); 

a:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top